令和5年度 科目A 問7
セキュリティ実装技術
Webアプリケーションにおけるセキュリティ上の脅威とその対策に関する記述のうち,適切なものはどれか。
- アOSコマンドインジェクションを防ぐために,Webアプリケーションが発行するセッションIDに推測困難な乱数を使用する。
- イSQLインジェクションを防ぐために,Webアプリケーション内でデータベースへの問合せを作成する際にプレースホルダを使用する。
- ウクロスサイトスクリプティングを防ぐために,Webサーバ内のファイルを外部から直接参照できないようにする。
- エセッションハイジャックを防ぐために,Webアプリケーションからシェルを起動できないようにする。
答えと解説を見る
✓ これが正解イSQLインジェクションを防ぐために,Webアプリケーション内でデータベースへの問合せを作成する際にプレースホルダを使用する。
解説
SQLインジェクション対策はプレースホルダの利用です。
この設問は、脅威と対策の組合せが正しいかを見るものです。SQLインジェクションは、入力された文字列がそのままSQL文の一部として解釈されてしまうことで起きます。プレースホルダを使うと、問合せの骨組みを先に決めて、入力は値としてはめ込むだけになるので、入力が命令として働く余地がなくなります。だからこの組合せが正しいものです。ほかの三つは、脅威に対して別の脅威向けの対策を当てているので、組合せとして噛み合っていません。
ほかの選択肢はなぜ違うのか
- アOSコマンドインジェクションを防ぐために…:セッションIDに推測困難な乱数を使うのは、セッションを乗っ取られないための対策です。OSコマンドインジェクションを防ぐ手立てではないので、組合せが噛み合っていません。
- ウクロスサイトスクリプティングを防ぐために…:Webサーバ内のファイルを外部から直接参照できないようにするのは、ディレクトリトラバーサルのように公開すべきでないファイルへ直接たどり着かれる攻撃を防ぐ対策です。クロスサイトスクリプティングを防ぐのは出力時のエスケープ処理なので、組合せが噛み合っていません。
- エセッションハイジャックを防ぐために,We…:Webアプリケーションからシェルを起動できないようにするのは、OSコマンドインジェクションへの対策です。セッションハイジャックを防ぐものではないので、組合せが入れ替わっています。
この問題の用語
- SQLインジェクション入力欄にデータベースへの命令を混ぜ込み、想定していない操作をさせる攻撃。入力をそのまま命令に組み込まないことが対策です。
- クロスサイトスクリプティング出力処理の不備を突き、利用者のブラウザで攻撃者のスクリプトを動かす攻撃です。防ぐには、出力する文字を無害な形に置き換えます。
- セッションハイジャックログイン中の利用者のIDを盗み、なりすましてアクセスする攻撃です。推測しにくい乱数をセッションIDに使うことが対策になります。
- プレースホルダ問合せ文の値の部分を、あとから当てはめる形にしておく書き方です。値を文と分けて渡すので、文の使い回しや不正な文の混入防止に役立ちます。
- Webアプリケーションブラウザから使う、サーバ側で動くプログラムのことです。利用者の端末に専用ソフトを入れずに使え、更新もサーバ側で済みます。
- 脅威情報資産に害を及ぼしうる出来事や行為のもと。弱点である脆弱性と結び付いたときに、実際の被害につながります。
- データベースたくさんのデータを決まった形で貯め、探したり書き換えたりできるようにした仕組み。多くの人が同時に使うことを前提にしています。
- Webサーバ利用者のブラウザからの要求を受け取り、ページを返すサーバです。画像などの静的な内容のほか、プログラムと連携して動的な内容も返します。
出典:令和5年度 情報セキュリティマネジメント試験 科目A 問7
同じ用語が出る問題
- 科目A・B サンプル問題 科目B 問58:脆弱性診断に関する問題(Webアプリケーション)
- 科目A・B サンプル問題 科目A 問25:CAPTCHAに該当するもの(プレースホルダ)
- 平成29年度 春期 午前 問23:ディレクトリトラバーサルの問題(セッションハイジャック)
- 平成28年度 秋期 午前 問22:バッファオーバーフローの問題(クロスサイトスクリプティング)
- 平成28年度 春期 午前 問21:SQLインジェクションの問題(SQLインジェクション)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)