Communitygithub.com

SamuelStefano/dfl-day4-agente-frontsec

前端安全稽核(掃描 FS01–FS11、相依性、連線階段 Cookie,並產出優先處理計畫)。一個確定性腳本實作 README.md 中的規則 1–45,並寫入 out/<case>.json。

dfl-day4-agente-frontsec 是什麼?

此技能為一個前端安全稽核代理,專門掃描網頁應用程式的弱點。它實作了超過 40 條機械化規則,涵蓋 11 個安全類別(FS01 至 FS11),並檢查相依性套件、連線階段 Cookie 以及內容安全政策 (CSP) 設定。此技能支援多種開發環境,包含 Claude Code、Codex 與 Cursor,並可無縫整合至 dfl/day4 工作流程。其運作方式是執行一個 Node.js 腳本 (`solve.mjs`),該腳本能自動處理指定案例並產生結構化 JSON 報告,置於 `out/` 目錄下。報告會根據 CVSS 風險分級與修復難易度,提供一個優先處理計畫。此設計為確定性流程,確保稽核結果可重現,並嚴格禁止修改核心目錄(如 `.opencode/` 或 `tests/`),以維持評估完整性。

相容平台~Claude Code~Codex CLI~Cursor✓OpenCode
npx skills add https://github.com/SamuelStefano/dfl-day4-agente-frontsec/tree/HEAD/skills/frontsec

在你喜歡的 AI 中提問

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

說明文件

前端安全稽核(任務 dfl/day4-frontsec-scan)

工作區 README.md 中的 45 條規則均為機械化規則,已在此資料夾的 solve.mjs 中實作。 請勿手動計算、解碼 JWT 或直接閱讀 Cookie。請執行腳本。

逐步操作

  1. 在工作區根目錄執行:

    node .opencode/skills/frontsec/solve.mjs
    

    它會讀取 casos/ 中的所有資料夾,並為每個案例寫入一個 out/<case>.json。若只想執行單一案例: node .opencode/skills/frontsec/solve.mjs exemplo-2。

  2. 執行 node .opencode/skills/checar-saida/check.mjs。

  3. 如果存在 tests/public,請執行 npx vitest run tests/public。

  4. 如果全部通過,請停止。請勿手動編輯 out/ 中的任何檔案。

若出現錯誤

  • 請勿編輯 .opencode/、tests/、casos/、README.md 或 package*.json。 任何 out/ 以外的檔案被修改都會導致分數歸零。

  • 若要修正腳本,請將其複製到 /tmp 並編輯複本:

    cp .opencode/skills/frontsec/solve.mjs /tmp/solve.mjs
    node /tmp/solve.mjs
    

    該複本仍會從目前所在資料夾讀取 casos/ 並寫入 out/。

  • 閱讀測試訊息,在 README.md 中找到涵蓋該欄位的規則,並僅修正對應的函式: scanLine/scanHeaders(階段 1)、dependencias(階段 2)、sessao(階段 3)、plano(階段 4)。 最多 3 個週期。若仍未通過,請保留腳本產生的最佳輸出。

腳本的保證內容(必要時可對照 README.md 確認)

  • 階段 1: 掃描整個 dist/ 目錄,包含子資料夾。僅讀取 .js 和 .html 檔案,逐行掃描,註解亦計入。
    • 金鑰僅在完全符合下列格式時才計入:pf_live_/pf_test_ + 24 個或更多 [A-Za-z0-9],或 nvm_sec_ + 32 個十六進位字元。 pf_pub_、nvm_pub_ 和佔位符一律不計。
    • JWT:Payload 以 base64url 解碼。role 為 anon 或 usuario 視為公開。任何其他值,或缺少 role,則觸發 FS03。
    • FS04:Sink 僅在來源文字直接寫在直到 ; 的程式碼片段中時才計入。FS05:( 後的第一個字元不能是引號(反引號亦算)。FS11:.map 必須存在(從該 .js 所在資料夾解析),或為 data:。
    • CSP:僅計入 script-src,若無則計入 default-src。忽略 Report-Only。HSTS 需要 max-age ≥ 31536000。
    • 重複的三元組(regra、arquivo、linha)只計一次。若存在 FS01 或 FS03,則評分為 F。
  • 階段 2: 如同 Node.js 方式解析,向上搜尋 node_modules,根目錄為 dependencies + devDependencies。
    • 路徑選取最短者,若長度相同則選字串順序較小者。版本號以數值方式比較。範圍支援 ||。
    • correcao 為已安裝版本以上、且不觸發任何警告的最小已發布版本。
    • navegador 要求在 .js 檔案中包含 /*! 名稱@版本 的標頭。
  • 階段 3:
    • 屬性不區分大小寫。網域名稱不含起始的 .,預設路徑取自該步驟的 caminho。
    • Max-Age 優先於 Expires。生命週期 ≤ 0 視為移除。
    • 7 個問題依清單順序列出。nao_removido_no_logout 要求在 logout 步驟中移除具相同身分識別的 Cookie。
  • 階段 4:
    • 項目為:cred:、cod:、hdr:、dep: 和 cookie:。dep: 項下計算在包含弱點套件標頭的 .js 檔案中發現的 FS04 和 FS05。
    • 例外判斷順序:不存在的項目優先,其次為嚴重,最後為已過期。
    • 優先級計算方式為 ⌊點數 × 10 ÷ 努力值⌋。排序規則:先依優先級,其次依點數,最後依 ID。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能