SQLインジェクション対策について、Webアプリケーションの実装における対策とWebアプリケーションの実装以外の対策の組合せとして、適切なものはどれか。
Webアプリケーションの実装における対策 | Webアプリケーションの実装以外の対策 | |
ア | Webアプリケーション中でシェルを起動しない。 | chroot環境でWebサーバを実行する。 |
イ | セッションIDを乱数で生成する。 | TLSによって通信内容を秘匿する。 |
ウ | パス名やファイル名をパラメータとして受け取らないようにする。 | 重要なファイルを公開領域に置かない。 |
エ | プレースホルダを利用する。 | データベースのアカウントをもつデータベースアクセス権限を必要最小限にする。 |
答え エ
【解説】
SQLインジェクション対策としてWebアプリケーションの実装で有効な方法には、利用者の入力をもとに生成されるSQL文の部分に“?”や“$1”などの特殊文字を使用したSQL文中のひな形を用意して、その変数部分には実行時に値を割り当てるプレースホルダ処理が有効です。
プレースホルダを使用すると入力されたデータを変数にセットする値として扱え、不正なSQL文とすることができなくなります。
Webアプリケーション以外の対策としては、基本的なことですがデータベースのアクセス権限を必要最小限にして不正なアクセスを防止します。
【キーワード】
・SQLインジェクション