クロスサイト スクリプティング (XSS)
11 最小読み取り安全
クロスサイト スクリプティングは、攻撃者が、あたかも正規のサイトの一部であるかのように、別のユーザーのブラウザで実行される JavaScript を挿入する脆弱性です。被害の範囲は、セッション Cookie の盗用から、被害者に代わって API 呼び出しを行うことまで多岐にわたります。 XSS は 20 年間にわたって OWASP トップ 10 にランクインしており、離れる気配はありません。
記事全文は以下に英語で記載されています。
pages.learningArticles.cross-site-scripting.bodyHtml
よくある質問
- XSS は今でも関連していますか?
- はい。 OWASP の最近の調査では、ほぼすべての Web アプリケーションに XSS が存在することが示されています。最新のフレームワークによりその頻度は減少しましたが、レガシー アプリ、カスタム コード、エッジ ケースのロングテールにより、XSS は最も多く報告されている Web 脆弱性の 1 つであり続けています。バグ報奨金プラットフォームでは、毎週何百もの XSS レポートが表示されます。
- XSS と CSRF の違いは何ですか?
- XSS は、信頼されたサイトに悪意のあるコードを挿入し、サイトの権限で実行します。 CSRF (クロスサイト リクエスト フォージェリ) は、被害者のブラウザをだまして、被害者のセッションを使用して、別の送信元から信頼できるサイトにリクエストを作成させます。それらは似ていますが、メカニズムと防御力が異なります。
- HttpOnly Cookie は XSS から保護しますか?
- 部分的に。 HttpOnly は、JavaScript が document.cookie を介して Cookie を読み取ることを防ぎ、Cookie 抽出攻撃を無効にします。ブラウザーが Cookie を自動的に送信するため、XSS ペイロードは引き続き認証されたリクエストを行うことができます。HttpOnly は、広範な攻撃ではなく、特定の 1 つのクラスの被害を阻止します。
- CSP は XSS を完全に排除できますか?
- 厳密な CSP (nonce ベース、「unsafe-inline」または「unsafe-eval」なし) は特効薬に最も近いものです。注入自体は妨げられませんが、注入されたペイロードの実行は妨げられます。アプリケーションでの出力エスケープと組み合わせると、厳密な CSP により、実際的な XSS の悪用が非常に困難になります。
- 静的サイトは影響を受けませんか?
- 完全にではありません。 DOM ベースの XSS は、クライアント側の JS が URL パラメーターを安全に使用しない場合でも静的サイトで動作します。 JavaScript を含まない純粋な HTML サイトには XSS がありません。最近のほとんどの「静的サイト」では JavaScript が十分に使用されているため、XSS が (まれではありますが) 問題になる可能性があります。