フロントセキュリティ監査(タスク dfl/day4-frontsec-scan)
ワークスペースの README.md にある45のルールはすべて機械的であり、このフォルダの solve.mjs に実装されています。
手動で計算したり、JWTをデコードしたり、Cookieを読み取ったりしないでください。スクリプトを実行してください。
手順
-
ワークスペースのルートで次を実行します。
node .opencode/skills/frontsec/solve.mjsこれにより
casos/内のすべてのフォルダが読み取られ、各ケースに対してout/<ケース>.jsonが書き込まれます。特定のケースのみ実行するには:node .opencode/skills/frontsec/solve.mjs exemplo-2 -
node .opencode/skills/checar-saida/check.mjsを実行します。 -
tests/publicが存在する場合、npx vitest run tests/publicを実行します。 -
すべてが成功したら、そこで停止します。
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で確認)
- ステップ1:
dist/全体(サブフォルダを含む)をスキャンします。.jsと.htmlのみを1行ずつ読み取り、コメントも対象とします。- キーは正確な形式でのみ有効:
pf_live_/pf_test_+ 24文字以上の[A-Za-z0-9]、またはnvm_sec_+ 32文字の16進数。pf_pub_、nvm_pub_、およびプレースホルダーはカウントしません。 - JWT: ペイロードは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)は1回としてカウント。FS01またはFS03がある場合はスコアF。
- キーは正確な形式でのみ有効:
- ステップ2: Nodeと同様に解決し、
node_modulesを上位にたどり、ルートはdependencies+devDependencies。- パスは最短で、同点の場合はテキスト順で最小のもの。バージョンは数値で比較されます。範囲は
||を受け入れます。 correcaoは、インストールされているバージョンより上で、どの警告にも該当しない公開された最小のバージョン。navegadorは.js内のバナー/*! 名前@バージョンを必要とします。
- パスは最短で、同点の場合はテキスト順で最小のもの。バージョンは数値で比較されます。範囲は
- ステップ3:
- 属性は大文字小文字を区別しません。ドメインは先頭の
.なし、デフォルトパスは手順のcaminhoから取得されます。 Max-AgeはExpiresより優先されます。有効期間 ≤ 0 は削除を意味します。- 7つの問題はリストの順序で出力されます。
nao_removido_no_logoutは、ログアウト手順で同じ識別子による削除が必要です。
- 属性は大文字小文字を区別しません。ドメインは先頭の
- ステップ4:
- 項目は
cred:、cod:、hdr:、dep:、cookie:です。脆弱なパッケージのバナーがある.js内のFS04とFS05はdep:に加算されます。 - 例外は次の順序で判断されます: 存在しない、次にクリティカル、次に期限切れ。
- 優先順位は
⌊ポイント × 10 ÷ 努力⌋。並べ替え: 優先順位、次にポイント、次にID。
- 項目は