クロスサイトスクリプティング対策

更新日:

用語解説

クロスサイトスクリプティング対策は、利用者の入力をWebページに表示する箇所で、悪意のあるスクリプトがブラウザで実行される攻撃(XSS)を防ぐための対策です。

■ 試験で押さえるポイント

  • 根本の対策は、出力するときに、HTMLで特別な意味を持つ文字(<、>、&、ダブルクォート、シングルクォート)をエスケープすることです。

  • HTMLの本文、属性、JavaScript、URLなど、出力する場所によって必要な処理が異なります。

  • CookieにHttpOnly属性を付けたり、CSPを設定したりして、被害を小さくします。

問題画像

■ 過去問での着眼点

CSPやHttpOnlyは被害を減らす対策で、出力のエスケープの代わりにはなりません。

例: 掲示板の投稿の「<script>」を「<script>」に置き換えて表示すれば、スクリプトとして実行されません。

■ 出力文脈・DOMとCSPの限界

  • HTML本文、HTML属性、JavaScript、URLでは適切な扱い方が異なる。入力時の一律置換だけに頼らず、出力する文脈に応じたエスケープや安全なAPIを使う。

    HTMLを許可する要件では信頼できるサニタイザで許可する要素・属性を限定する。

  • DOMベースXSSでは、locationや外部メッセージなどの入力がinnerHTML等の危険な出力先へ渡る経路を調べる。通常のテキスト表示ならtextContent等を選び、文字列をコードとして実行しない。

  • CSPは実行できるスクリプトを制限する補助策である。nonceやhashの運用、許可した外部配信元の侵害も考慮する。HttpOnlyはCookie読取りを制限するが、XSSで本人のブラウザから操作されること全体は防げない。

音声で聞く

同じ分野の用語