平成30年度 秋期 システムアーキテクト試験 午前Ⅱ 問25
テクノロジ/セキュリティWeb アプリケーションにおけるセキュリティ上の脅威とその対策に関する記述のうち,適切なものはどれか。
出典:平成30年度 秋期 システムアーキテクト試験 午前Ⅱ 問25
- アOS コマンドインジェクションを防ぐために,Web アプリケーションが発行するセッション ID に推測困難な乱数を使用する。
- イSQL インジェクションを防ぐために,Web アプリケーション内でデータベースへの問合せを作成する際にプレースホルダを使用する。
- ウクロスサイトスクリプティングを防ぐために,Web サーバ内のファイルを外部から直接参照できないようにする。
- エセッションハイジャックを防ぐために,Web アプリケーションからシェルを起動できないようにする。
正解:イ
解説
SQL インジェクションは,Web アプリケーションがデータベースへの問合せ(SQL 文)を組み立てる際に,利用者からの入力値をそのまま文字列連結してしまうことで発生します。対策として,SQL 文の雛型(プレースホルダ)を用意し,入力値をパラメータとしてバインドするプレースホルダ(バインド機構)を使用することで,入力値が SQL 文の構造に影響を与えないようにすることが有効です。
選択肢ごとの解説
- ア誤り。セッション ID に推測困難な乱数を使用することは,セッションハイジャック(セッションIDの推測・固定化)を防ぐための対策であり,OS コマンドインジェクション対策ではありません。
- イ正しい。SQL インジェクションを防ぐために,データベースへの問合せを作成する際にプレースホルダを使用することは有効な対策です。
- ウ誤り。Web サーバ内のファイルを外部から直接参照できないようにすることは,ディレクトリトラバーサルなどのファイル不正参照を防ぐための対策であり,クロスサイトスクリプティング対策の説明としては適切ではありません。
- エ誤り。Web アプリケーションからシェルを起動できないようにすることは,OS コマンドインジェクションを防ぐための対策であり,セッションハイジャック対策ではありません。