平成28年度 秋期 情報セキュリティスペシャリスト試験 午前Ⅱ 問17
アプリケーションセキュリティ
SQLインジェクションの問題
SQL インジェクション対策について,Web アプリケーションの実装における対策と Web アプリケーションの実装以外の対策として,ともに適切なものはどれか。
| Web アプリケーションの実装における対策 | Web アプリケーションの実装以外の対策 | |
|---|---|---|
| ア | Web アプリケーション中でシェルを起動しない。 | chroot 環境で Web サーバを稼働させる。 |
| イ | セッション ID を乱数で生成する。 | TLS によって通信内容を秘匿する。 |
| ウ | パス名やファイル名をパラメタとして受け取らないようにする。 | 重要なファイルを公開領域に置かない。 |
| エ | プレースホルダを利用する。 | データベースのアカウントがもつデータベースアクセス権限を必要最小限にする。 |
- アWeb アプリケーション中でシェルを起動しない。 / chroot 環境で Web サーバを稼働させる。
- イセッション ID を乱数で生成する。 / TLS によって通信内容を秘匿する。
- ウパス名やファイル名をパラメタとして受け取らないようにする。 / 重要なファイルを公開領域に置かない。
- エプレースホルダを利用する。 / データベースのアカウントがもつデータベースアクセス権限を必要最小限にする。
答えと解説を見る
✓ これが正解エプレースホルダを利用する。 / データベースのアカウントがもつデータベースアクセス権限を必要最小限にする。
解説
プレースホルダの利用と、アカウントの権限の最小化の組です。
表の各行は、実装での対策と、実装以外の対策の組です。まず、各行がどの攻撃に向けた対策かを仕分けます。SQL インジェクションは、入力に紛れ込ませた文字列で SQL 文の構造を書き換える攻撃です。実装では、プレースホルダを使って SQL 文の形を先に固め、入力は値としてだけ扱わせます。実装以外では、データベースのアカウントの権限を必要最小限にしておけば、万一攻撃が成功しても被害の範囲を抑えられます。どちらの列も SQL インジェクションに向いているのは、この行だけです。
ほかの選択肢はなぜ違うのか
- アWeb アプリケーション中でシェルを起動…:シェルを起動しないことと、chroot 環境で Web サーバを動かすことは、OS のコマンドを不正に実行させる攻撃への対策の組です。どちらも有効な対策ですが、データベースへの命令を悪用する攻撃には向いていません。
- イセッション ID を乱数で生成する。 /…:セッション ID を乱数で作ることは推測による乗っ取りへの対策、TLS による秘匿は盗聴への対策です。いずれも Web の安全には役立ちますが、データベースへの命令を書き換える攻撃は防げません。
- ウパス名やファイル名をパラメタとして受け取…:パス名やファイル名をパラメタで受け取らないことと、重要なファイルを公開領域に置かないことは、上位のディレクトリへ抜けてファイルを読む攻撃への対策です。狙っている攻撃が違います。
この問題の用語
- プレースホルダ問合せ文の値の部分を、あとから当てはめる形にしておく書き方です。値を文と分けて渡すので、文の使い回しや不正な文の混入防止に役立ちます。
- セッション利用者がつながってから終わるまでの、一続きのやり取りのことです。識別のためのIDが割り当てられ、同じ利用者のやり取りとしてまとめます。
- TLS通信の中身を途中で読まれたり書き換えられたりしないよう、暗号にして届ける取り決め。つないだ相手が本物かも確かめます。
- データベースたくさんのデータを決まった形で貯め、探したり書き換えたりできるようにした仕組み。多くの人が同時に使うことを前提にしています。
- アカウントシステムを使う人ごとに割り当てられる、利用のための資格や識別名です。利用者IDとパスワードなどの組で、本人を見分けて使わせます。
- アクセス権限「アクセス権」と同じ意味です。参照だけができる許可と、書き換えもできる許可のように、種類に分けて示すときによく使われる言い方です。
出典:平成28年度 秋期 情報セキュリティスペシャリスト試験 午前Ⅱ 問17
同じ用語が出る問題
- 令和7年度 秋期 午前Ⅱ 問17:IEEE 802.1Xの問題(セッション)
- 令和7年度 春期 午前Ⅱ 問6:デジタル証明書に関する記述(TLS)
- 令和7年度 春期 午前Ⅱ 問4:カミンスキー攻撃への対策(プレースホルダ)
- 令和6年度 秋期 午前Ⅱ 問25:業務処理統制に該当するもの(アクセス権限)
- 令和5年度 春期 午前Ⅱ 問17:SQLインジェクションの問題(アカウント)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)