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