iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0

前兩天安裝好了 zen mcp ,那今天就來實際使用,看看效果!
主題:以我自己的專案做「安全審查與修復」任務,對比 無 Zen(單模型)有 Zen(Claude 主導 + Gemini Pro 協作) 的輸出差異。

核心觀察:Zen 讓 Claude 變成「調度者」,把長上下文分析與程式碼審核丟給 Gemini,最後輸出可執行修復腳本、測試腳本與 Markdown 報告,整體更系統化、可落地


1. 實驗場景與目標

  • 目標任務:

    1. 全面安全審查(閱讀 app.pyrequirements.txt.env.example 等核心檔案)
    2. 列出弱點清單與優先級

2. 兩種使用方式:Prompt 與流程

A. 無 Zen(單模型) — Baseline Prompt

對專案進行安全審查,查找潜在漏洞,需要可執行的計

常見狀況

  • 會給出「檢查點 + 建議」的綜合文字,但不會主動建立測試/修復腳本與專案內檔案。
  • 內容品質取決於單次輸出;若需要腳本、驗證、重新檢查,要再追問/切換子任務。
  • 容易變成「建議清單」而不是「可執行方案」。
    *實際畫面

B. 有 Zen(Claude 主導 × Gemini Pro) — 協作 Prompt

複製即可測試

使用zen和gemini pro對專案進行安全審查,查找潜在漏洞,需要可执行的計畫

實測表現(摘錄)

  • 自動列出讀檔摘要:app.py 317 行、requirements.txt 8 行、.env.example 13 行。
  • 直接生成三個檔案(可貼入專案)。
  • 報告含優先級表(高危/中危/低危)、立即修復路線圖(腳本→驗證→配置→完整測試)。
    https://ithelp.ithome.com.tw/upload/images/20250928/20178773Nefv7Jvvg9.png

3. 實測輸出:Zen 產物摘要

https://ithelp.ithome.com.tw/upload/images/20250928/20178773e0j23sFxII.png

SECURITY_AUDIT_REPORT.md(片段)

https://ithelp.ithome.com.tw/upload/images/20250928/20178773URqKSw6C8d.png

  • 執行摘要:建議採取立即行動修復高風險項,並落實安全最佳實踐。

  • 弱點總結(示意):

    • ⛔ 高危:

      • 模板輸入未轉義 → 可能 XSS
      • 檔案上傳驗證不足 → 任意檔案上傳
    • ⚠️ 中危:

      • CSRF 防護缺失/不完整
      • 機密資訊處理不當(e.g., SECRET_KEY
    • ⚪ 低危:

      • 錯誤訊息暴露/HTTP 安全標頭缺失
  • 立即修復計畫(命令式步驟):

    1. 執行修復腳本:python3 security_fixes.py
    2. 安裝安全依賴:pip install -r requirements.txt
    3. 設置機密:echo "SECRET_KEY=$(python3 -c 'import secrets; print(secrets.token_hex(32))')" >> .env
    4. 切換生產模式:echo "FLASK_ENV=production" >> .env
    5. 執行測試:python3 security_test.py --output security_results.json

security_fixes.py(內容要點)

  • 設置/檢查 SECRET_KEY,並提醒使用 .env
  • 補上 Flask + Jinja2 安全選項(如 autoescape、CSP header、X-Content-Type-Options)
  • 上傳檔案白名單與大小限制、隨機檔名、隔離路徑
  • 開啟/強化 CSRF 保護(若使用 WTForms/Flask-WTF)
  • 修正錯誤處理(避免堆疊追蹤外洩)

security_test.py(內容要點)

  • XSS 測試:對關鍵路由注入 <script>alert(1)</script> 檢查輸出是否被轉義
  • 上傳測試:嘗試 .php / 大檔案 → 應被拒絕
  • CSRF 測試:無 token 的 POST 應 403
  • 安全標頭:CSP、X-Frame-Options、HSTS 等是否存在
  • 環境變數SECRET_KEY 是否由 .env 載入且非硬編碼

4. 結果比較(質化)

維度 無 Zen(單模型) 有 Zen(Claude×Gemini)
產出形式 一次性長文建議為主 多檔可執行產物(報告/修復/測試)
作業流程 人工拆解、來回追問 調度自動拆解:讀檔→列 TODO→產檔→驗證
長上下文 受單模型上下文限制 用 Gemini 讀取長上下文
覆蓋深度 容易漏測(測試不完整) 測試腳本→可回歸驗證
可重現性 低(內容分散對話中) 高(檔案進 repo、CI 可執行)

關鍵差異:Zen 讓輸出變成流程與產物,而不是只有建議文字。


5. 發揮了 Gemini 的優勢?

  1. 長上下文能力:能閱讀多檔、長檔,並跨檔交叉推理。

  2. 程式推演穩定:在「安全修補 + 測試生成」這類結構化任務上,給出可落地腳本的成功率高。

  3. 與 Claude 的分工

    • Claude:任務規劃、品質把關、整體敘事/產出格式
    • Gemini:深讀檔案、細節修補、測試覆蓋

上一篇
[Day14] GPT 抓資料 vs Python 腳本
下一篇
[Day16]Chrome DevTools MCP 登場:讓其他 AI 驅動瀏覽器自動化框架遇上勁敵
系列文
生成式 AI 輔助程式設計:探索 Vibe Coding、Claude 與 Cursor 的新世代開發體驗21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言