Community程式設計與開發github.com

secure-webapp

提供基於 OWASP 的實用安全指南,適用於建構、編輯或審查網頁應用程式時。

secure-webapp 是什麼?

Secure Web App Coding 是一個安全技能,將 OWASP Top 10:2025、ASVS 5.0、Cheat Sheet Series 與精選 WSTG 內容轉化為實戰導向的網頁應用程式安全指引。它支援多種操作模式,包括內建安全分析、全面稽核、快速掃描、自動修復、設計審查、正式報告產出以及技能更新等。 此技能會根據任務情境動態載入對應的安全參考文件(如輸入處理、身份驗證、授權、JWT/OAuth、API 安全、前端與標頭、密碼與組態、資料加密、供應鏈安全、安全編碼、日誌錯誤、不安全設計、AI/LLM 安全等 13 類參考),避免一次性載入所有資源。同時具備 20 項常駐監控清單,可在開發過程中即時標記高風險問題(如遺漏伺服端授權檢查、硬編密碼、字串拼接 SQL、明文密碼儲存、JWT 驗證缺失、XSS、SSRF、日誌洩漏、LLM 輸出未檢查等),並提供具體修復建議。 此技能設計為跨平台通用,可在 Claude Code、Codex、Gemini CLI 等任何支援技能或 `AGENTS.md`/`GEMINI.md` 的環境中運作。它要求工程師預設編寫安全程式碼,並根據應用程式的風險等級調整安全強度,避免在不適當的情境強加企業級控制項。

相容平台✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/gabrielereylane/lovable-skills/tree/HEAD/.agents/skills/secure-webapp

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

安全網頁應用程式編碼

將 OWASP Top 10:2025、ASVS 5.0、Cheat Sheet Series 以及精選 WSTG 內容轉化為實戰導向的網頁應用程式安全指引。

預設(內嵌模式): 安靜地編寫安全程式碼;只需標記您附近所見影響最高的問題。 稽核模式: 當使用者輸入「review」、「audit」、「harden」、「is this secure?」,或進行事件跟進時,讀取 assets/audit-checklist.md 並產出優先排序的發現結果。

模式,透過 $secure-webapp <模式> 呼叫:

  • $secure-webapp audit:全功能優先排序審查;讀取 assets/audit-checklist.md。
  • $secure-webapp quick-check:僅針對最高風險項目進行掃描 — 授權、驗證/工作階段、密碼、注入/XSS、上傳、SSRF、令牌。不產出完整檢查表報告。
  • $secure-webapp harden:直接在允許編輯的地方套用安全變更;進行不破壞架構的小型修補;驗證,並標記任何需要產品核准的項目。
  • $secure-webapp remediate:反覆進行稽核→修復循環;先完整讀取 assets/remediate-checklist.md。
  • $secure-webapp design-review:實作前的威脅模型分析 — 假設、信任邊界、濫用案例、必備控制項、未解決問題。
  • $secure-webapp report:將正式報告寫入 docs/security-audit-report-YYYY-MM-DD.md;先完整讀取 assets/report-template.md 並遵循每個步驟。需要在本次對話中先執行過稽核。寫入檔案,切勿寫入對話。
  • $secure-webapp update:透過執行 npx --yes github:hov172/secure-webapp-skill --global 自行更新此安裝。它會進行版本檢查,僅在存在較新版本時才重新安裝。標誌:--claude/--codex/--gemini、--check、--force。
  • $secure-webapp maintain:從原始碼儲存庫的複本更新技能套件本身 — 請參閱 scripts/README.md。

僅載入任務所需的參考資料。切勿一次全部載入。

路由

任務涉及載入項目
未受信任的字串被解釋為 HTML/DOM/SQL/shell/NoSQL/LDAP/regex/CSVreferences/input-handling.md
登入、註冊、密碼、MFA、重設、暴力破解、工作階段、Cookie、登出references/auth-and-sessions.md
權限、角色、所有權檢查、IDOR、租戶隔離references/authorization.md
JWT、API/重新整理令牌、簽章與驗證、OAuth/OIDC、PKCE、statereferences/tokens-and-oauth.md
REST/GraphQL/WebSocket 端點、速率限制、大量賦值、回應形狀、上傳/下載、路徑遍歷、預先簽署的 URLreferences/apis-and-files.md
Secure/HttpOnly/SameSite、CSP、CORS、CSRF、標頭、iframe、postMessagereferences/frontend-and-headers.md
環境變數、.env、金鑰、密碼管理器、除錯模式、預設值references/secrets-and-config.md
加密、密碼雜湊、演算法、金鑰管理、PIIreferences/data-and-crypto.md
相依性、鎖定檔案、SBOM、CI/CD、GitHub Actions、簽署的成品references/supply-chain.md
使用者控制的外部 URL、SSRF、競爭條件、反序列化、原型污染references/secure-coding.md
日誌、錯誤回應、堆疊追蹤、稽核軌跡、失敗關閉、回滾references/logging-and-errors.md
新功能設計、威脅模型、多租戶、安全設計決策references/insecure-design.md
LLM/AI 功能、提示建構、RAG、代理工具呼叫、MCP 伺服器、模型輸出的渲染或執行references/ai-and-llm.md

常駐監控清單

在網頁程式碼中看到以下問題時,順便標記出來,並提供一個具體的修復方式:

  1. 資源路由缺少伺服器端授權/所有權檢查。建議使用查詢層級的作用域,例如 WHERE owner_id = :current_user。
  2. 硬編碼的密碼、憑證、JWT 密碼、API 金鑰,或已提交的 .env 檔案。
  3. 使用字串拼接的 SQL/NoSQL/shell 查詢。應使用參數化查詢、安全建構器或 argv API。
  4. 純文字或快速雜湊的密碼。應使用 argon2id、scrypt 或 bcrypt;僅在必要時使用 PBKDF2。
  5. JWT 驗證時未固定演算法、缺少 exp/iss/aud 檢查,或在程式碼中洩漏密碼。
  6. dangerouslySetInnerHTML、v-html 或 innerHTML 使用了使用者內容。應以文字形式渲染或進行消毒。
  7. 帶有憑證的 CORS 使用了萬用字元或回顯來源。應使用嚴格的允許清單。
  8. 登入、註冊、重設、MFA/OTP 或高成本端點缺少速率限制。
  9. 在正式環境中向用戶端暴露詳細的錯誤訊息、堆疊追蹤、SQL/ORM 詳細資訊或除錯模式。
  10. 來自未經驗證的 next、returnTo 或 URL 參數的開放式重定向。
  11. 使用者提供的 URL 導致 SSRF,且未使用允許清單,也未在 DNS 解析和重定向後阻擋私有 IP。
  12. 日誌中包含密碼、令牌、工作階段 ID、密碼或不必要的 PII。
  13. 僅在用戶端實施的安全控制:隱藏欄位、禁用按鈕、用戶端角色聲明、前端專屬驗證。
  14. 檔案上傳缺乏大小、類型、路徑、儲存或產生名稱的控制。
  15. 身份驗證、授權、速率限制、功能開關或交易周圍的失敗開放例外路徑。
  16. 非原子性的餘額、配額、付款、庫存、優惠券或一次性令牌狀態變更。
  17. 模型/LLM 輸出未經檢查就傳遞到像 innerHTML、shell、SQL、檔案路徑、fetch URL 或下游代理這類的接收端。應將其視為不受信任的輸入。
  18. 代理工具呼叫是針對服務帳戶而非終端使用者進行授權,或使用了通用的 run_shell/execute_sql/http_request 工具,這會將提示注入轉變為 RCE、SQLi 或 SSRF。
  19. 將不受信任的文字串聯進系統提示;或將密碼或其他使用者的資料放入模型上下文。
  20. 可變的相依性或 CI 動作參考,在預期應使用固定版本和鎖定檔案的情況下 — 被移動的標籤會讓攻擊者在該工作中以該工作的密碼執行程式碼。當該工作持有部署憑證、簽署金鑰或發佈權限時,評定為高風險;對於存在 OIDC 的長期雲端憑證也是如此。稽核單一儲存庫中的每個工作區,並標記任何低於 high 的 --audit-level。

行為

  • 預設編寫安全程式碼,無需冗長說明。在必要時簡短說明安全相關的選擇。
  • 根據應用程式的風險等級調整嚴謹度;不要將企業級控制項強加於一次性原型。
  • 絕不生成故意不安全的程式碼。提供安全的等效方案,並用一句話說明限制條件。
  • 對於新的信任邊界功能,檢查:不受信任的輸入、授權、失敗模式、儲存的資料、濫用路徑。
  • 進行稽核時,檢查實際程式碼,僅詢問必要的範圍界定問題,並報告嚴重性、位置、證據及修復方式,且應按優先順序排列。
  • 除非被問到,否則不要引用 OWASP 需求編號。
  • 不要聲稱進行滲透測試;這僅是程式碼與設計審查。

範圍

主流網頁技術棧 — Next.js、Express、Django、Flask、FastAPI、Rails、Spring、Laravel、Go 及類似技術。對於參考資料未涵蓋的特定領域,請說明情況並指向相關的 OWASP 來源,而非自行猜測。

與代理無關:適用於 Claude Code、Codex、Gemini CLI 以及其他任何載入技能或讀取 AGENTS.md/GEMINI.md 的工具。當此檔案提及某個工具時,請使用您環境中的等效工具。

相關技能