問題

Webアプリケーションにおけるクロスサイトスクリプティング(XSS)対策に関する記述として、適切なものはどれか。

ア)SQLインジェクション対策と同様に、プレースホルダを使用することでXSSを防止できる。

イ)ユーザからの入力値をHTMLとして出力する際に、< や > などの特殊文字をHTMLエンティティに変換することでXSSのリスクを低減できる。

ウ)XSS対策としてCookieにSecure属性を付与すれば、スクリプトの注入自体を防止できる。

エ)XSSは通信経路上でデータが改ざんされる攻撃であり、TLSによる暗号化で根本的に防止できる。

解答・解説を見る

正解: イ)

解説:

  • ア)プレースホルダ(バインド機構)はSQLインジェクション対策の手法であり、XSS対策には直接関係しません。誤りです。
  • イ)出力時に<、>、&、"などの特殊文字をHTMLエンティティ(&lt;、&gt;など)にエスケープすることで、悪意あるスクリプトがHTMLタグとして解釈されるのを防げます。正解です。
  • ウ)Secure属性はCookieをHTTPS通信でのみ送信させる設定であり、XSSによるスクリプト注入自体を防ぐものではありません。むしろCookieの盗み出し対策としてはHttpOnly属性が有効です。誤りです。
  • エ)XSSはアプリケーションが受け付けた入力を適切に処理せず、悪意あるスクリプトを出力に混入させてしまう脆弱性であり、通信経路上の改ざんとは異なります。TLSはXSSの根本対策にはなりません。誤りです。

重要キーワード

用語説明
XSS悪意あるスクリプトをWebページに注入する攻撃
HTMLエスケープ特殊文字をHTMLエンティティに変換し無害化する処理
HttpOnly属性JavaScriptからCookieへのアクセスを禁止する属性
CSPContent Security Policy。スクリプト実行元を制限する仕組み