SAシステムアーキテクト試験 午前Ⅱ

平成28年度秋期 システムアーキテクト 午前Ⅱ 問24

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

安全なWebアプリケーションの作り方について,攻撃と対策の適切な組合せはどれか。

選択肢

  1. ア
    攻撃:SQLインジェクション,対策:SQL文の組立てに静的プレースホルダを使用する。
  2. イ
    攻撃:クロスサイトスクリプティング,対策:任意の外部サイトのスタイルシートを取り込めるようにする。
  3. ウ
    攻撃:クロスサイトリクエストフォージェリ,対策:リクエストにGETメソッドを使用する。
  4. エ
    攻撃:セッションハイジャック,対策:利用者ごとに固定のセッションIDを使用する。
解き方のヒントを見る

攻撃の成立箇所と対策の作用点

攻撃手法と対策の対応を考えるときは、名称の印象で結び付けず、攻撃がどの段階で何を悪用して成立するかと、対策がどの段階に作用してその成立を妨げるかを照らし合わせる視点が役立ちます。

この問題で問われていること

確認する観点は一つに絞ります。それぞれの対策が処理の流れのどこで働くのかと、それぞれの攻撃がどこで成立するのかが一致しているかを、対応ごとに自分の言葉で理由付けできるかを確かめてください。

視点

Webアプリケーションへの攻撃は、外部から与えられたデータや要求が、ある処理段階で開発者の意図しない働きをすることで成立すると整理できます。対策は、その段階に作用して攻撃の成立条件を崩すものです。名前が似ている、同じ分野の用語であるといった理由だけでは、対応関係の根拠になりません。攻撃が成立する位置と、対策が作用する位置が同じかどうかを基準に考えると、対応関係を筋道立てて検討できます。

確認ポイント

  • その攻撃は処理の流れのどの位置で、何が原因となって成立するのかを自分の言葉で説明できるか
  • その対策は処理の流れのどの位置に作用し、何を防ぐ仕組みなのかを自分の言葉で説明できるか
  • 攻撃の成立位置と対策の作用位置が一致しているかを、名称の印象ではなく理由付けで確認したか
正解と解説を見る

正解

ア

解説

正しい組合せは、SQLインジェクションに対してSQL文と入力値を適切に分離する対策を採用しているものです。他の組合せは、攻撃を防げないか、むしろ危険性を高める内容です。

理由

SQLインジェクションは、利用者の入力がSQL文の構造として解釈されることで発生します。SQL文の組立てで静的プレースホルダを使うと、入力値をSQL文の命令部分と分離して扱えるため、この攻撃への適切な対策になります。

比較

クロスサイトスクリプティング、クロスサイトリクエストフォージェリ、セッションハイジャックには、それぞれ出力値の扱い、リクエストの正当性確認、セッションIDの安全な管理が必要です。提示された対策はいずれも該当する攻撃を防ぐ内容になっていません。

選択肢ア(正解)

これは正解だよ。SQLインジェクションは、入力値がSQL文の一部として解釈されることで発生します。SQL文の組立てに静的プレースホルダを使用すると、SQL文の構造と入力値を分離できるため、入力値による命令の改変を防ぐ対策として適切です。

選択肢イ

これは不正解だよ。クロスサイトスクリプティングは、攻撃者が用意したスクリプトを利用者のブラウザで実行させる攻撃です。任意の外部サイトのスタイルシートを取り込めるようにすることは、スクリプトの実行を防ぐ対策ではなく、外部コンテンツへの依存を広げる設定です。

選択肢ウ

これは不正解だよ。クロスサイトリクエストフォージェリは、利用者の意図しないリクエストを、認証済みの状態で送信させる攻撃です。リクエストにGETメソッドを使用するだけでは、送信元の正当性や利用者の意図を確認できず、防御策にはなりません。

選択肢エ

これは不正解だよ。セッションハイジャックは、攻撃者にセッションIDを取得・悪用され、利用者になりすまされる攻撃です。利用者ごとに固定のセッションIDを使用すると、推測や再利用の危険が増すため、安全なセッション管理の対策にはなりません。

学習のポイント

攻撃手法の成立条件と、それを直接防ぐ対策の対応関係を整理する。

出典:独立行政法人 情報処理推進機構(IPA)平成28年度秋期 システムアーキテクト試験 午前Ⅱ 問24(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針