問題
Webアプリケーションにおけるクロスサイトスクリプティング(XSS)対策に関する記述として、適切なものはどれか。
ア)SQLインジェクション対策と同様に、プレースホルダを使用することでXSSを防止できる。
イ)ユーザからの入力値をHTMLとして出力する際に、< や > などの特殊文字をHTMLエンティティに変換することでXSSのリスクを低減できる。
ウ)XSS対策としてCookieにSecure属性を付与すれば、スクリプトの注入自体を防止できる。
エ)XSSは通信経路上でデータが改ざんされる攻撃であり、TLSによる暗号化で根本的に防止できる。
解答・解説を見る
正解: イ)
解説:
- ア)プレースホルダ(バインド機構)はSQLインジェクション対策の手法であり、XSS対策には直接関係しません。誤りです。
- イ)出力時に
<、>、&、"などの特殊文字をHTMLエンティティ(<、>など)にエスケープすることで、悪意あるスクリプトがHTMLタグとして解釈されるのを防げます。正解です。 - ウ)Secure属性はCookieをHTTPS通信でのみ送信させる設定であり、XSSによるスクリプト注入自体を防ぐものではありません。むしろCookieの盗み出し対策としてはHttpOnly属性が有効です。誤りです。
- エ)XSSはアプリケーションが受け付けた入力を適切に処理せず、悪意あるスクリプトを出力に混入させてしまう脆弱性であり、通信経路上の改ざんとは異なります。TLSはXSSの根本対策にはなりません。誤りです。
重要キーワード
| 用語 | 説明 |
|---|---|
| XSS | 悪意あるスクリプトをWebページに注入する攻撃 |
| HTMLエスケープ | 特殊文字をHTMLエンティティに変換し無害化する処理 |
| HttpOnly属性 | JavaScriptからCookieへのアクセスを禁止する属性 |
| CSP | Content Security Policy。スクリプト実行元を制限する仕組み |