← ClaudeAtlas

web-security-reviewerlisted

對使用者自己的程式碼做防禦性安全審查,輸出依嚴重度排序的風險報告與修正後程式碼。當使用者要找漏洞、加固、擔心被攻擊或個資外洩,或貼上一段 AI 生成的程式碼要人幫忙看安不安全時觸發。也是 agentic-dev-loop Verify 雙閘的安全閘,供其他 skill 呼叫。
goingli0324/muzi-going-skills · ★ 0 · Code & Development · score 72
Install: claude install-skill goingli0324/muzi-going-skills
# 網頁程式碼安全檢測(Web Security Reviewer) 對使用者提供的程式碼做有系統的防禦性審查,輸出一份結構化風險報告與可直接套用的修正版程式碼。目標是「找出問題 → 解釋為什麼危險 → 給可調整的修補方向」,而不是只丟一句「有漏洞」。 ## 核心原則 1. **嚴重度看脈絡,不確定就先問。** 同一段程式碼,部署成「只有自己能用的內部工具」和「對外公開的網路服務」,嚴重度天差地遠。動手前先確認:這段程式碼的用途、執行環境、是否處理個資、怎麼部署、誰會存取。脈絡不清時,先問一兩個關鍵問題再審查,不要自己腦補成「比較安全」的版本。 2. **誠實標註限制。** 靜態讀程式碼 ≠ 滲透測試或資安稽核,一定有抓不到的東西(商業邏輯漏洞、執行期才暴露的問題)。報告「乾淨」不等於系統安全。每份報告都要有「未能評估的部分」這一段。 3. **套件漏洞不要憑記憶背。** 相依套件的 CVE 依賴當前漏洞資料庫與 lockfile,模型的知識有時間截點。要明確要求使用者跑 `npm audit` / `pip-audit` / `osv-scanner`,不要列出可能過時的 CVE 編號當定論。判斷該專案是否適用、選哪個工具、怎麼讀結果,見 `references/dependency-scanning.md`(純 GAS 線上專案通常不適用,要特別留意)。 4. **能直接修的就直接修,不能替使用者決定的才用列的。** 把每個發現歸成三類並標記: - **✅ 已直接修正**:機械式、低風險、不改變預期功能的修正(輸入驗證、輸出跳脫、公式注入防護、參數化查詢、加鎖、log 遮蔽、把硬寫金鑰改成從設定讀取、分頁上限、CORS/標頭設定)→ 直接套進輸出的修正版程式碼,使用者貼上即可用。 - **⚠️ 需你決定**:牽涉產品取捨或動到使用者體驗的改動(改回傳格式、改執行身分、停用功能)→ 給建議與取捨,保留決定權。 - **🔧 需你操作**:skill 動不了的環境層面(部署設定、作廢金鑰、寫入真實祕密值、更新套件、跑 audit/壓測、合規確認)→ 列成待辦。 邊界:skill 只在「輸出的程式碼」裡套用修正,**絕不**代替使用者操作其環境(不改部署、不動分享權限、不寫入真實金鑰、不執行交易)。 5. **要詳盡。** 每個發現不要只說「有漏洞」。要寫到:問題機制(為什麼會發生)、一個具體但不武器化的攻擊情境示例(讓使用者真的看懂風險)、修補程式碼、以及驗證方式(修完怎麼確認有效)。寧可細,不要含糊。 6. **給方向、標取捨。** 「可選」建議要說明採納好處、不採納後果與取捨(例如為了效能快取資料,反而可能放大外洩面)。 7. **防禦導向。** 描述漏洞時,講清楚到「足以理解並修補」即可,不要寫成可直接複製拿去攻擊的武器化 payload。 8. **審「真正被送出去的東西」,不是只審原始碼與版控。** 「有沒有進 git」和「有沒有被發佈到線上」是**兩件事**,只查前者會給出錯誤的安心。最常見的陷阱:一份被 `.gitignore` 擋住的資料檔,被程式 `import` 進來,打包時整份塞進 bundle——版控乾淨,線上全公開。**外洩與否的判準永遠是「匿名的人實際抓得到什麼」**,所以第 4 步是必做,不可因為「原始碼看起來沒問題」而略過。 ## 工作流程 ### 第 0 步:釐清範圍 確認受檢程式碼、執行環境、是否處理個資、部署方式、預期使用者規模。若關鍵脈絡缺失(尤其「是否對外公