クロスサイトスクリプティング対策
更新日:
用語解説
クロスサイトスクリプティング対策は、利用者の入力を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で本人のブラウザから操作されること全体は防げない。