セキュリティ実装技術|令和5年度 情報セキュリティマネジメント試験 科目A 問7
Webアプリケーションにおけるセキュリティ上の脅威とその対策に関する記述のうち,適切なものはどれか。
- OSコマンドインジェクションを防ぐために,Webアプリケーションが発行するセッションIDに推測困難な乱数を使用する。
- ✓ これが正解SQLインジェクションを防ぐために,Webアプリケーション内でデータベースへの問合せを作成する際にプレースホルダを使用する。
- クロスサイトスクリプティングを防ぐために,Webサーバ内のファイルを外部から直接参照できないようにする。
- セッションハイジャックを防ぐために,Webアプリケーションからシェルを起動できないようにする。
解説
SQLインジェクション対策はプレースホルダの利用です。
この設問は、脅威と対策の組合せが正しいかを見るものです。SQLインジェクションは、入力された文字列がそのままSQL文の一部として解釈されてしまうことで起きます。プレースホルダを使うと、問合せの骨組みを先に決めて、入力は値としてはめ込むだけになるので、入力が命令として働く余地がなくなります。だからこの組合せが正しいものです。ほかの三つは、脅威に対して別の脅威向けの対策を当てているので、組合せとして噛み合っていません。
ほかの選択肢はなぜ違うのか
- セッションIDに推測困難な乱数を使うのは、セッションを乗っ取られないための対策です。OSコマンドインジェクションを防ぐ手立てではないので、組合せが噛み合っていません。
- Webサーバ内のファイルを外部から直接参照できないようにするのは、ディレクトリトラバーサルのように公開すべきでないファイルへ直接たどり着かれる攻撃を防ぐ対策です。クロスサイトスクリプティングを防ぐのは出力時のエスケープ処理なので、組合せが噛み合っていません。
- Webアプリケーションからシェルを起動できないようにするのは、OSコマンドインジェクションへの対策です。セッションハイジャックを防ぐものではないので、組合せが入れ替わっています。
この問題に関係する言葉
- SQLインジェクション入力欄にデータベースへの命令を混ぜ込み、想定していない操作をさせる攻撃。入力をそのまま命令に組み込まないことが対策です。
- クロスサイトスクリプティング出力処理の不備を突き、利用者のブラウザで攻撃者のスクリプトを動かす攻撃です。防ぐには、出力する文字を無害な形に置き換えます。
- セッションハイジャックログイン中の利用者のIDを盗み、なりすましてアクセスする攻撃です。推測しにくい乱数をセッションIDに使うことが対策になります。
- プレースホルダ問合せ文の値の部分を、あとから当てはめる形にしておく書き方です。SQLインジェクションを防ぐ対策として使われます。
出典:令和5年度 情報セキュリティマネジメント試験 科目A 問7
同じ単元をまとめて解くならセキュリティ実装技術へ。
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)