平成26年度春期 応用情報技術者試験 午前 問40
安全なWebアプリケーションの作り方について,攻撃と対策の適切な組合せはどれか。

- ア SQLインジェクション:SQL文の組立てに静的プレースホルダを使用する。
- イ クロスサイトスクリプティング:任意の外部サイトのスタイルシートを取り込めるようにする。
- ウ クロスサイトリクエストフォージェリ:リクエストにGETメソッドを使用する。
- エ セッションハイジャック:利用者ごとに固定のセッションIDを使用する。
解答・解説を見る
正解:ア
AI解説
SQLインジェクションは、入力値にSQLの断片を混入させてSQL文の構造を改変する攻撃である。静的プレースホルダ(プリペアドステートメント)を使うと、SQL文の構造を先に確定してから入力値を後でバインドするため、入力値がSQL文として解釈されず、原理的にSQLインジェクションを防げる。攻撃と対策の組合せとして適切なのはアだけである。 ア: 正しい。静的プレースホルダはSQL文の構造を固定し、入力値を単なるデータとして扱うため、SQLインジェクションの根本対策となる。 イ: 任意の外部サイトのスタイルシートを取り込めるようにするのは、むしろ攻撃を許す設定であり、XSS対策は特殊文字のエスケープ処理である。 ウ: CSRF対策はPOSTメソッドと秘密トークンの併用や再認証であり、GETメソッドの使用はURLに情報が残るためむしろ不適切である。 エ: 固定のセッションIDはセッションハイジャックやセッション固定攻撃を容易にする。対策はログイン成功時にセッションIDを新たに発行し直すことである。 💡 IPAの「安全なウェブサイトの作り方」の定番知識。「SQLインジェクション=プレースホルダ」「XSS=エスケープ」「CSRF=トークン」「セッションハイジャック=ID再発行・推測困難なID」と対応表で覚える。
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。