平成26年度秋期 応用情報技術者試験 午前 問40
Web アプリケーションにおけるセキュリティ上の脅威と対策の適切な組合せはどれか。
- ア OS コマンドインジェクションを防ぐために,Web アプリケーションが発行するセッション ID を推測困難なものにする。
- イ SQL インジェクションを防ぐために,Web アプリケーション内でデータベースへの問合せを作成する際にバインド機構を使用する。
- ウ クロスサイトスクリプティングを防ぐために,外部から渡す入力データを Web サーバ内のファイル名として直接指定しない。
- エ セッションハイジャックを防ぐために,Web アプリケーションからシェルを起動できないようにする。
解答・解説を見る
正解:イ
AI解説
SQLインジェクションは、入力データにSQL文の断片を混入させて意図しないSQLを実行させる攻撃である。対策の代表がバインド機構(プレースホルダ)で、SQL文の構造を先に確定し、入力値を後から単なる値として埋め込むため、入力中の記号がSQLとして解釈されず攻撃が成立しない。脅威と対策の対応が正しいのはこの組合せだけである。 ア: セッションIDを推測困難にするのはセッションハイジャック対策である。OSコマンドインジェクション対策はシェル呼出しの禁止や入力の無害化である。 イ: 正しい。バインド機構はSQLインジェクションの根本的対策である。 ウ: 入力データをファイル名として直接指定しないのはディレクトリトラバーサル対策である。クロスサイトスクリプティング対策は出力時のエスケープ処理である。 エ: シェルを起動できなくするのはOSコマンドインジェクション対策である。セッションハイジャック対策はセッションIDの推測困難化や再発行などである。 💡 この問題は対策のシャッフルが仕掛け。「SQLi=バインド機構」「XSS=エスケープ」「ディレクトリトラバーサル=ファイル名直接指定禁止」「OSコマンドインジェクション=シェル起動禁止」「セッションハイジャック=ID推測困難化」の対応表を丸ごと覚える。
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。