rg -n \
'innerHTML|outerHTML|insertAdjacentHTML|document\.write|eval\(|new Function' \
static frontend templates
単純な文字列検索には誤検知があります。
最終的には、ESLint、Semgrep、CodeQL、SASTなどと組み合わせます。
次のデータをテストフィクスチャへ追加します。
XSS_TEST_<>&"'_ATTRIBUTE
XSS_TEST_MARKDOWN
XSS_TEST_WEBSOCKET
XSS_TEST_FILENAME
XSS_TEST_USER_AGENT
入力から管理画面まで、文字として表示されることを自動テストします。
機能ごとに次を記録します。
| 項目 | 内容 |
|---|---|
| Source | URL、API、DB、WebSocketなど |
| 変換処理 | Markdown、テンプレート、JSONなど |
| Sink | innerHTML、URL属性など |
| コンテキスト | HTML、属性、JavaScript、URL |
| 防御 | エンコード、サニタイズ、CSP |
| 表示者 | 一般ユーザー、管理者、SOC担当者 |
特に次のライブラリを継続的に確認します。