平成26年度 春期 午前 問40
セキュリティ
安全な Web アプリケーションの作り方について,攻撃と対策の適切な組合せはどれか。
- ア攻撃=SQL インジェクション / 対策=SQL 文の組立てに静的プレースホルダを使用する。
- イ攻撃=クロスサイトスクリプティング / 対策=任意の外部サイトのスタイルシートを取り込めるようにする。
- ウ攻撃=クロスサイトリクエストフォージェリ / 対策=リクエストに GET メソッドを使用する。
- エ攻撃=セッションハイジャック / 対策=利用者ごとに固定のセッション ID を使用する。
答えと解説を見る
✓ これが正解ア攻撃=SQL インジェクション / 対策=SQL 文の組立てに静的プレースホルダを使用する。
解説
値と命令を混ぜない書き方が、根本からの対策です。
設問は、攻撃とその対策の組合せとして適切なものを選ばせています。組合せを選ぶ設問では、攻撃の名前を見た時点で自分の答えを一つ書いてから表を読むと、もっともらしい語に引かれずに済みます。適切な組合せは、SQL インジェクションに対する静的プレースホルダです。これは命令の骨格を先に確定させ、後から値を値としてだけ当てはめる仕組みで、利用者が入力した文字列が命令として解釈される余地をなくします。特殊な文字を取り除いて回る方法では漏れが出ますし、文字列をつなげて命令を組み立てるやり方を変えない限り、危うさは残ったままです。なお残る三つは、対策として弱いというより、いずれも攻撃を成立させる側に立っています。向きが逆だと気づけば、その場で一つに絞れます。
ほかの選択肢はなぜ違うのか
- イ攻撃=クロスサイトスクリプティング / …:任意の外部サイトのスタイルシートを取り込めるようにすると、攻撃者が用意した内容を自分のページへ読み込ませる道を開いてしまいます。この攻撃に効くのは、出力するときに記号を無害な表記へ置き換えることです。
- ウ攻撃=クロスサイトリクエストフォージェリ…:GET を使うと情報がアドレスに乗るので、リンクや画像を踏ませるだけで要求を作れてしまいます。クロスサイトリクエストフォージェリはまさにそれを利用する攻撃で、効くのは画面ごとに推測できない印を埋め込んで照合することです。
- エ攻撃=セッションハイジャック / 対策=…:利用者ごとに固定の値を使えば、一度盗まれたセッション ID がいつまでも通ってしまいます。効くのは逆で、ログインのたびに推測しにくい値へ作り直すことです。
この問題の用語
- クロスサイトスクリプティング出力処理の不備を突き、利用者のブラウザで攻撃者のスクリプトを動かす攻撃です。防ぐには、出力する文字を無害な形に置き換えます。
- セッションハイジャックログイン中の利用者のIDを盗み、なりすましてアクセスする攻撃です。推測しにくい乱数をセッションIDに使うことが対策になります。
- プレースホルダ問合せ文の値の部分を、あとから当てはめる形にしておく書き方です。値を文と分けて渡すので、文の使い回しや不正な文の混入防止に役立ちます。
出典:平成26年度 春期 応用情報技術者試験 午前 問40
同じ用語が出る問題
- 令和7年度 春期 午前 問42:OSコマンドインジェクション対策(プレースホルダ)
- 令和7年度 春期 午前 問36:脆弱性に関する問題(クロスサイトスクリプティング)
- 平成28年度 春期 午前 問41:セッションハイジャックの問題(セッションハイジャック)
- 平成27年度 秋期 午前 問44:ブルートフォース攻撃に関する問題(セッションハイジャック)
- 平成24年度 秋期 午前 問41:SQLインジェクションの問題(プレースホルダ)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)