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

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

