ソース:
訳:
例 1: セッションハイジャックの脆弱性
ここでは、アプリケーションにCookieを設定し。
URL param(name) を操作して、スクリプトを実行し、攻撃者のエンドポイントに Cookie を送信することができ。
URL Param: “?name=[Encoded_URI_Component]”
「img src」が存在しない場合、「onerror」部分が実行され、その結果、Cookie が攻撃者のエンドポイントに送信されて。
例 2: 不正行為の脆弱性
場合によっては、私たちの知識や行動なしに、私たちのアカウントで投稿が作成されることがあり。
URL Param: “?name=<img src=“error.gif” onerror=“createPost(‘HACK_TITLE’, ‘HACK_DESCRIPTION’);” />”
「img src」がない場合、「onerror」部分が実行され、ユーザー入力が適切に処理されず、リクエストがシステムから送信されたため、投稿が作成されて。
例 3: キーストロークのキャプチャ
URL Param: “?name=[Encoded_URI_Component]”
すべてのキーストロークが監視され、攻撃者のエンドポイントに送られ。
例 4: 重要な情報を盗む
コンテンツ全体/DOM (あらゆる種類の情報を含むことができる) を特定の URL に送信する。
URL Param: “?name=[Encoded_URI_Component]”
ページのコンテンツ全体が攻撃者のエンドポイントに送信され。
例 5: フィッシング攻撃
URL Param: “?name=[Encoded_URI_Component]”
フォームが開き、そこからログインの詳細が偽のエンドポイントに送信され。
緩和
- すべてのユーザー入力を処理する
- innerText を使用する | innerHTML の代わりに textContent
- 逃げる
特殊文字をコードに置き換えて、DOM 要素ではなくテキストとしてみなされるため実行されないようにし。
- Reactのようなライブラリを使う
{name} — DOM 要素ではなくテキストとして考慮されます
- DOM Purify などのライブラリを使用してデータをサニタイズする
- CSP ヘッダー (コンテンツ セキュリティ ポリシー)
許可されたソース | スクリプトナンス | レポート専用モード
次の例では、サードパーティのサイトが CSP ヘッダーを通じてブロックされて
ほなほな。