応用情報技術者 2014年 秋期 午前2 問40
問題文
Webアプリケーションにおけるセキュリティ上の脅威と対策の適切な組合せはどれか。
選択肢
ア:OS コマンドインジェクションを防ぐために、 Webアプリケーションが発行するセッションIDを推測困難なものにする。
イ:SQLインジェクションを防ぐために、 Webアプリケーション内でデータベースへの問合せを作成する際にバインド機構を使用する。(正解)
ウ:クロスサイトスクリプティングを防ぐために、 外部から渡す入力データを Webサーバ内のファイル名として直接指定しない。
エ:セッションハイジャックを防ぐために、 Webアプリケーションからシェルを起動できないようにする。
Webアプリケーションにおけるセキュリティ上の脅威と対策の適切な組合せ【午前2 解説】
要点まとめ
- 結論:SQLインジェクション対策にはバインド機構の使用が最も効果的である。
- 根拠:バインド機構はSQL文とデータを分離し、不正なSQLコードの実行を防ぐため安全性が高い。
- 差がつくポイント:各脅威に対する具体的な対策を正確に理解し、誤った対策を選ばないことが重要。
正解の理由
選択肢イは「SQLインジェクションを防ぐためにバインド機構を使用する」とあり、これはSQLインジェクション対策の基本かつ効果的な方法です。バインド機構(プリペアドステートメント)は、SQL文の構造とパラメータを分離し、ユーザー入力がSQL文として解釈されるのを防ぎます。これにより、悪意あるSQLコードの挿入を防止できるため正解です。
よくある誤解
- セッションIDの推測困難化はセッションハイジャック対策であり、OSコマンドインジェクション対策ではありません。
- クロスサイトスクリプティング(XSS)対策は入力のエスケープやサニタイズが基本で、ファイル名指定の回避は直接的な対策ではありません。
解法ステップ
- 各脅威の特徴を理解する(OSコマンドインジェクション、SQLインジェクション、XSS、セッションハイジャック)。
- それぞれの脅威に対して一般的に推奨される対策を確認する。
- 選択肢の対策が脅威に適切に対応しているかを検証する。
- 最も適切な組み合わせを選ぶ。
選択肢別の誤答解説
- ア: OSコマンドインジェクション対策にセッションIDの推測困難化は無関係。OSコマンドインジェクションはコマンドの入力検証やエスケープが必要。
- イ: 正解。SQLインジェクション対策としてバインド機構の使用は標準的かつ効果的。
- ウ: クロスサイトスクリプティング対策は主に入力のエスケープやサニタイズであり、ファイル名指定の回避は直接的な対策ではない。
- エ: セッションハイジャック対策にシェル起動制限は関係ない。セッション管理の強化やHTTPS利用が有効。
補足コラム
SQLインジェクションはWebアプリケーションの脆弱性の中でも特に危険で、攻撃者がデータベースを不正操作できるため、バインド機構やORMの利用、入力値の検証が必須です。クロスサイトスクリプティングはJavaScriptなどのスクリプトを悪用する攻撃で、HTMLエスケープやContent Security Policy(CSP)が対策として有効です。
FAQ
Q: バインド機構はどのようにSQLインジェクションを防ぐのですか?
A: SQL文とパラメータを分離し、パラメータを文字列として扱うため、悪意あるSQLコードが実行されません。
A: SQL文とパラメータを分離し、パラメータを文字列として扱うため、悪意あるSQLコードが実行されません。
Q: セッションIDの推測困難化はどの脅威に有効ですか?
A: セッションハイジャック対策に有効で、推測困難なIDは不正取得を防ぎます。
A: セッションハイジャック対策に有効で、推測困難なIDは不正取得を防ぎます。
関連キーワード: SQLインジェクション、バインド機構、クロスサイトスクリプティング、セッションハイジャック、OSコマンドインジェクション、Webアプリケーションセキュリティ

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

