平成24年度 秋期 応用情報技術者試験 午前 問41
テクノロジ/セキュリティ安全なWebアプリケーションの作り方について,攻撃と対策の適切な組合せはどれか。 ア SQLインジェクション 対策:SQL文の組立てに静的プレースホルダを使用する。 イ クロスサイトスクリプティング 対策:任意の外部サイトのスタイルシートを取り込めるようにする。 ウ クロスサイトリクエストフォージェリ 対策:リクエストにGETメソッドを使用する。 エ セッションハイジャック 対策:利用者ごとに固定のセッションIDを使用する。 (注:本サイトでは原問題の表を文字表記に変換しています)
出典:平成24年度 秋期 応用情報技術者試験 午前 問41
- アSQLインジェクション対策として,SQL文の組立てに静的プレースホルダを使用する。
- イクロスサイトスクリプティング対策として,任意の外部サイトのスタイルシートを取り込めるようにする。
- ウクロスサイトリクエストフォージェリ対策として,リクエストにGETメソッドを使用する。
- エセッションハイジャック対策として,利用者ごとに固定のセッションIDを使用する。
正解:ア
解説
SQLインジェクション対策としては,SQL文を動的に組み立てるのではなく,プレースホルダ(バインド機構)を使ってSQL文の構造と入力値を分離することが有効です。他の選択肢は,本来意図される安全な対策とは逆に,脆弱性を助長する記述になっています。
選択肢ごとの解説
- ア正しい。SQL文の組立てに静的プレースホルダを使用することは,SQLインジェクション対策として有効です。
- イ誤り。任意の外部サイトのスタイルシートを取り込めるようにすると,悪意あるスタイルシートやスクリプトの混入を許し,クロスサイトスクリプティングの対策にはなりません。
- ウ誤り。GETメソッドの使用はクロスサイトリクエストフォージェリの対策にはならず,むしろURLにパラメータが残るなど別の問題を招きます。対策としてはトークンの埋め込みなどが必要です。
- エ誤り。利用者ごとに固定のセッションIDを使い続けると,セッションIDが漏えいした場合になりすましが可能になり,セッションハイジャックの対策にはなりません。対策としてはログイン時などにセッションIDを再生成することが有効です。