SQLインジェクション対策について,Webアプリケーションの実装における対策と,Webアプリケーションの実装以外の対策として,ともに適切なものはどれか。
SQL注入はプレースホルダで防ぎDB権限最小化で被害を抑える
| Webアプリケーションの実装における対策 | Webアプリケーションの実装以外の対策 | |
|---|---|---|
| ア | Webアプリケーション中でシェルを起動しない。 | chroot環境でWebサーバを稼働させる。 |
| イ | セッションIDを乱数で生成する。 | TLSによって通信内容を秘匿する。 |
| ウ | パス名やファイル名をパラメタとして受け取らないようにする。 | 重要なファイルを公開領域に置かない。 |
| エ | プレースホルダを利用する。 | データベースのアカウントがもつデータベースアクセス権限を必要最小限にする。 |
選択肢
- アWebアプリケーションの実装における対策:Webアプリケーション中でシェルを起動しない。 / 実装以外の対策:chroot環境でWebサーバを稼働させる。
- イ実装における対策:セッションIDを乱数で生成する。 / 実装以外の対策:TLSによって通信内容を秘匿する。
- ウ実装における対策:パス名やファイル名をパラメタとして受け取らないようにする。 / 実装以外の対策:重要なファイルを公開領域に置かない。
- エ実装における対策:プレースホルダを利用する。 / 実装以外の対策:データベースのアカウントがもつデータベースアクセス権限を必要最小限にする。
正解と解説
正解:エ 実装における対策:プレースホルダを利用する。 / 実装以外の対策:データベースのアカウントがもつデータベースアクセス権限を必要最小限にする。
SQLインジェクションの実装面での根本対策は、プレースホルダを用いた静的なSQL組立て(バインド機構)である。値をSQL文の文字列に連結せず、パラメタとして渡すため、入力に構文要素が混じっても命令としては解釈されない。加えて実装以外の備えとして、アプリが使うDBアカウントの権限を必要最小限に絞れば、万一注入されても被害範囲を限定できる。
選択肢ごとの解説
- アシェルを起動しないことやchroot化は、OSコマンドインジェクションや侵害範囲の限定に効く対策である。
- イセッションIDの乱数生成やTLSによる秘匿は、セッションハイジャックや盗聴への対策である。
- ウパス名を受け取らない、公開領域に重要ファイルを置かないのはディレクトリトラバーサル対策である。
- エ正しい。プレースホルダによる根本対策と、DBアカウント権限の最小化による被害の局限の組合せである。
同じ分野の他の問題
- クロスサイトリクエストフォージェリ攻撃の対策として,効果がないものはどれか。2025年度 秋期 午前II 問16
- クリックジャッキング攻撃に有効な対策はどれか。2022年度 秋期 午前II 問11
- WAFにおけるフォールスポジティブに該当するものはどれか。2024年度 秋期 午前II 問12
- Webサーバから送信されるHTTPヘッダーのうち、Webサーバからの応答の内容を、Webブラウザやプロキシサーバなどのキ…2024年度 春期 午前II 問20
- HTTP Strict Transport Security(HSTS)の動作はどれか。2024年度 春期 午前II 問13
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。