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

- ア 攻撃:SQLインジェクション,対策:SQL文の組立てに静的プレースホルダを使用する。
- イ 攻撃:クロスサイトスクリプティング,対策:任意の外部サイトのスタイルシートを取り込めるようにする。
- ウ 攻撃:クロスサイトリクエストフォージェリ,対策:リクエストにGETメソッドを使用する。
- エ 攻撃:セッションハイジャック,対策:利用者ごとに固定のセッションIDを使用する。
解答・解説を見る
正解:ア
AI解説
SQLインジェクションは、入力値にSQL文の断片を混入させてデータベースを不正操作する攻撃である。対策の基本は、SQL文の雛形をあらかじめ確定させ、入力値を後から機械的に埋め込む静的プレースホルダ(プリペアドステートメント)の使用であり、アの組合せが適切である。 ア: 正しい。静的プレースホルダを使えば入力値は常にデータとして扱われ、SQL文の構造を変えられないため、SQLインジェクションを原理的に防げる。 イ: クロスサイトスクリプティング(XSS)の対策は出力時のエスケープ処理などである。任意の外部サイトのスタイルシート取込みを許すのはむしろ脆弱性を広げる。 ウ: クロスサイトリクエストフォージェリ(CSRF)の対策は秘密トークンの埋込みと照合やPOSTの利用+再認証などである。GETメソッドの使用は対策にならず、URLに情報が残る分むしろ危険である。 エ: セッションハイジャック対策は、推測困難なセッションIDをログインごとに新規発行することである。固定のセッションIDはセッションフィクセーション攻撃を許し逆効果である。 💡 攻撃と対策の対応表(SQLインジェクション=プレースホルダ、XSS=エスケープ、CSRF=トークン、セッションハイジャック=ランダムなID再発行)はIPA「安全なウェブサイトの作り方」の定番知識で、そのまま出題される。
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。