IPA過去問ドリル

令和3年度 春期 情報処理安全確保支援士試験 午前Ⅱ 問12

テクノロジ/セキュリティ

安全な Web アプリケーションの作り方について,攻撃と対策の適切な組合せはどれか。 〔攻撃と対策の一覧〕 ア:攻撃-SQL インジェクション/対策-SQL 文の組立てに静的プレースホルダを使用する。 イ:攻撃-クロスサイトスクリプティング/対策-任意の外部サイトのスタイルシートを取り込めるようにする。 ウ:攻撃-クロスサイトリクエストフォージェリ/対策-リクエストに GET メソッドを使用する。 エ:攻撃-セッションハイジャック/対策-利用者ごとに固定のセッション ID を使用する。 (注:本サイトでは原問題の表を文字表記に変換しています)

出典:令和3年度 春期 情報処理安全確保支援士試験 午前Ⅱ 問12

正解:ア

解説

SQL インジェクション対策としては,SQL 文を組み立てる際に,パラメータの値をあらかじめコンパイルされた SQL 文の枠(プレースホルダ)に後から埋め込む「静的プレースホルダ」(プリペアドステートメント)を使用することで,入力値が SQL 文の構造に影響を与えないようにできます。他の選択肢は,いずれも本来のセキュリティ対策とは逆に脆弱性を助長する内容になっています。

選択肢ごとの解説

  • 正しい。SQL インジェクション対策として,SQL 文の組立てに静的プレースホルダを使用することは適切な対策です。
  • 誤り。クロスサイトスクリプティング対策として,任意の外部サイトのスタイルシートを取り込めるようにすることは,むしろ外部からのコンテンツ挿入を許すことになり,対策に逆行します。
  • 誤り。クロスサイトリクエストフォージェリ対策として,リクエストに GET メソッドを使用することは対策になりません。GET メソッドはむしろ CSRF を誘発しやすく,対策としてはトークンの利用などが必要です。
  • 誤り。セッションハイジャック対策として,利用者ごとに固定のセッション ID を使用することは,セッション ID の推測や使い回しによる乗っ取りのリスクを高めるため,対策として不適切です(本来はログインのたびにセッション ID を再生成すべきです)。
情報処理安全確保支援士の過去問を演習モードで解く