平成28年度 秋期 システムアーキテクト試験 午前Ⅱ 問24
テクノロジ/セキュリティ安全な Web アプリケーションの作り方について,攻撃と対策の適切な組合せはどれか。
出典:平成28年度 秋期 システムアーキテクト試験 午前Ⅱ 問24
- アSQL インジェクション:SQL 文の組立てに静的プレースホルダを使用する。
- イクロスサイトスクリプティング:任意の外部サイトのスタイルシートを取り込めるようにする。
- ウクロスサイトリクエストフォージェリ:リクエストに GET メソッドを使用する。
- エセッションハイジャック:利用者ごとに固定のセッション ID を使用する。
正解:ア
解説
SQL インジェクション攻撃は,Web アプリケーションが利用者からの入力値を SQL 文の一部としてそのまま組み込んでしまうことによって,データベースへの不正な操作を可能にしてしまう攻撃です。対策として,SQL 文の雛型(プレースホルダ)をあらかじめコンパイル時などに静的に確定させておき,入力値をデータとしてのみバインドする「静的プレースホルダ」を使用することで,入力値が SQL 文の構造そのものに影響を与えないようにできます。
選択肢ごとの解説
- ア正しい。SQL インジェクション対策として,SQL 文の組立てに静的プレースホルダを使用することは,入力値が SQL 文の構造に影響しないようにする適切な対策です。
- イ誤り。クロスサイトスクリプティング対策としては,外部サイトのスタイルシートや任意のスクリプトの取り込みを制限すべきであり,任意の外部サイトのスタイルシートを取り込めるようにすることは,むしろ攻撃を許してしまう不適切な対応です。
- ウ誤り。クロスサイトリクエストフォージェリ対策としては,正規の画面から発行されたリクエストであることを確認するトークンなどの仕組みが必要であり,単にリクエストに GET メソッドを使用することは対策にならず,むしろ攻撃者による URL 経由の不正リクエストを容易にしてしまいます。
- エ誤り。セッションハイジャック対策としては,セッション ID をログインのたびに変更し推測されにくいものにすべきであり,利用者ごとに固定のセッション ID を使用することは,セッション ID の漏えい・盗用によるなりすましを容易にしてしまう不適切な対応です。