平成28年度 秋期 午前Ⅱ 問24
セキュリティ
安全な Web アプリケーションの作り方について,攻撃と対策の適切な組合せはどれか。
選択肢は原典では攻撃・対策の表。
- ア攻撃:SQL インジェクション / 対策:SQL 文の組立てに静的プレースホルダを使用する。
- イ攻撃:クロスサイトスクリプティング / 対策:任意の外部サイトのスタイルシートを取り込めるようにする。
- ウ攻撃:クロスサイトリクエストフォージェリ / 対策:リクエストに GET メソッドを使用する。
- エ攻撃:セッションハイジャック / 対策:利用者ごとに固定のセッション ID を使用する。
答えと解説を見る
✓ これが正解ア攻撃:SQL インジェクション / 対策:SQL 文の組立てに静的プレースホルダを使用する。
解説
SQL インジェクションには、静的プレースホルダが有効な対策です。
SQL インジェクションは、入力欄に SQL の一部を紛れ込ませ、意図しない SQL 文を実行させる攻撃です。静的プレースホルダは、SQL 文のひな形を先にデータベースへ渡して構文を確定させ、利用者の入力は後から値としてだけ当てはめる方法です。入力が SQL の構文として解釈される余地がなくなるので、攻撃の根本的な対策になります。見分ける軸は、その対策が攻撃の仕組みを断っているか、かえって攻撃を助けていないかです。ほかの組合せは、外部のスタイルシートの取込みや GET の使用、固定のセッション ID のように、むしろ危険を増やす設定になっています。構文を先に固め、入力は値としてだけ扱う、と覚えると判断できます。
ほかの選択肢はなぜ違うのか
- イ攻撃:クロスサイトスクリプティング / …:クロスサイトスクリプティングへの対策では、外部から取り込む内容を制限する方向で考えます。任意の外部サイトのスタイルシートを取り込めるようにすると、攻撃者が用意した内容を読み込む入口を増やしてしまいます。
- ウ攻撃:クロスサイトリクエストフォージェリ…:クロスサイトリクエストフォージェリは、利用者に意図しないリクエストを送らせる攻撃です。GET メソッドにすると、リンクや画像を開かせるだけで処理を実行させやすくなり、対策としてはかえって逆効果です。
- エ攻撃:セッションハイジャック / 対策:…:利用者ごとに固定のセッション ID を使うと、一度知られた ID でずっとなりすませてしまいます。セッションハイジャックを防ぐには、推測しにくい ID をログインのたびに発行し直すことが求められます。
この問題の用語
- セッションハイジャックログイン中の利用者のIDを盗み、なりすましてアクセスする攻撃です。推測しにくい乱数をセッションIDに使うことが対策になります。
- プレースホルダ問合せ文の値の部分を、あとから当てはめる形にしておく書き方です。値を文と分けて渡すので、文の使い回しや不正な文の混入防止に役立ちます。
- クロスサイトスクリプティング出力処理の不備を突き、利用者のブラウザで攻撃者のスクリプトを動かす攻撃です。防ぐには、出力する文字を無害な形に置き換えます。
出典:平成28年度 秋期 システムアーキテクト試験 午前Ⅱ 問24
同じ用語が出る問題
- 令和3年度 春期 午前Ⅱ 問17:DDoSに関する問題(クロスサイトスクリプティング)
- 平成30年度 秋期 午前Ⅱ 問25(セッションハイジャック)
- 平成30年度 秋期 午前Ⅱ 問23:DDoSに関する問題(クロスサイトスクリプティング)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)