SQLインジェクション対策について,Webアプリケーションプログラムの実装における対策と,Webアプリケーションプログラムの実装以外の対策の組みとして,適切なものはどれか。
SQLインジェクションはプレースホルダとDB権限の最小化で守る
| Webアプリケーションプログラムの実装における対策 | Webアプリケーションプログラムの実装以外の対策 | |
|---|---|---|
| ア | Webアプリケーションプログラム中でシェルを起動しない。 | chroot環境でWebサーバを稼働させる。 |
| イ | セッションIDを乱数で生成する。 | TLSによって通信内容を秘匿する。 |
| ウ | パス名やファイル名をパラメータとして受け取らないようにする。 | 重要なファイルを公開領域に置かない。 |
| エ | プレースホルダを利用する。 | Webアプリケーションプログラムが利用するデータベースのアカウントがもつデータベースアクセス権限を必要最小限にする。 |
選択肢
- アWebアプリケーションプログラム中でシェルを起動しない。/chroot環境でWebサーバを稼働させる。
- イセッションIDを乱数で生成する。/TLSによって通信内容を秘匿する。
- ウパス名やファイル名をパラメータとして受け取らないようにする。/重要なファイルを公開領域に置かない。
- エプレースホルダを利用する。/Webアプリケーションプログラムが利用するデータベースのアカウントがもつデータベースアクセス権限を必要最小限にする。
正解と解説
正解:エ プレースホルダを利用する。/Webアプリケーションプログラムが利用するデータベースのアカウントがもつデータベースアクセス権限を必要最小限にする。
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/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。