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