令和3年度 春期 午前Ⅱ 問12
アプリケーションセキュリティ
SQLインジェクションの問題
安全な Web アプリケーションの作り方について,攻撃と対策の適切な組合せはどれか。
| 攻撃 | 対策 | |
|---|---|---|
| ア | SQL インジェクション | SQL 文の組立てに静的プレースホルダを使用する。 |
| イ | クロスサイトスクリプティング | 任意の外部サイトのスタイルシートを取り込めるようにする。 |
| ウ | クロスサイトリクエストフォージェリ | リクエストに GET メソッドを使用する。 |
| エ | セッションハイジャック | 利用者ごとに固定のセッション ID を使用する。 |
- アSQL インジェクション / SQL 文の組立てに静的プレースホルダを使用する。
- イクロスサイトスクリプティング / 任意の外部サイトのスタイルシートを取り込めるようにする。
- ウクロスサイトリクエストフォージェリ / リクエストに GET メソッドを使用する。
- エセッションハイジャック / 利用者ごとに固定のセッション ID を使用する。
答えと解説を見る
✓ これが正解アSQL インジェクション / SQL 文の組立てに静的プレースホルダを使用する。
解説
SQL インジェクションには、静的プレースホルダで SQL 文を組み立てます。
静的プレースホルダは、SQL 文の構造をあらかじめ確定させてから、利用者の入力を値として当てはめる方法です。入力の中に SQL の記号が含まれていても、文の一部として解釈されることがありません。そのため、SQL インジェクションへの根本的な対策になります。この問では、攻撃の名前と対策の組が正しく対応しているかを確かめます。対策の欄が、その攻撃を本当に防ぐ方向に働くかどうかが判断の軸です。
ほかの選択肢はなぜ違うのか
- イクロスサイトスクリプティング / 任意の…:任意の外部サイトのスタイルシートを取り込めるようにすると、外部から持ち込まれる内容を制御できなくなり、かえって攻撃の入口を広げます。クロスサイトスクリプティングへの対策とは逆の方向です。
- ウクロスサイトリクエストフォージェリ / …:リクエストに GET メソッドを使っても、クロスサイトリクエストフォージェリは防げません。対策としては、推測されにくいトークンをページに埋め込んで確かめる方法や、重要な操作の前の再認証が挙げられます。
- エセッションハイジャック / 利用者ごとに…:利用者ごとに固定のセッション ID を使うと、一度盗まれたり推測されたりした ID で乗っ取られ続けてしまいます。推測されにくい ID をログインのたびに振り直すのが対策であり、セッションハイジャックを防ぐ組ではありません。
この問題の用語
- プレースホルダ問合せ文の値の部分を、あとから当てはめる形にしておく書き方です。値を文と分けて渡すので、文の使い回しや不正な文の混入防止に役立ちます。
- クロスサイトスクリプティング出力処理の不備を突き、利用者のブラウザで攻撃者のスクリプトを動かす攻撃です。防ぐには、出力する文字を無害な形に置き換えます。
- セッションハイジャックログイン中の利用者のIDを盗み、なりすましてアクセスする攻撃です。推測しにくい乱数をセッションIDに使うことが対策になります。
出典:令和3年度 春期 情報処理安全確保支援士試験 午前Ⅱ 問12
同じ用語が出る問題
- 令和7年度 春期 午前Ⅱ 問4:カミンスキー攻撃への対策(プレースホルダ)
- 令和5年度 秋期 午前Ⅱ 問1:シェルスクリプトに関する問題(セッションハイジャック)
- 令和5年度 春期 午前Ⅱ 問17:SQLインジェクションの問題(プレースホルダ)
- 令和4年度 春期 午前Ⅱ 問1(クロスサイトスクリプティング)
- 平成30年度 春期 午前Ⅱ 問2:HTTPリクエストヘッダの問題(クロスサイトスクリプティング)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)