C主任: |
今回は,SQLインジェクション対策の不備を突かれてお客様に迷惑を掛けてしまいました。Webサイト再開に当たって,再度同様の攻撃を受けないように対処する必要があるので,どのような対策があり,最善策は何か,専門家の立場から助言してもらえますか。
|
E氏: |
対策としては,Webアプリケーションファイアウォールを設置する方法とWebアプリケーションを修正する方法があります。後者は,エスケープ処理を施す方法と,DBMSの機能であるバインド機構を利用する方法が考えられます。SQLインジェクション対策のためのエスケープ処理とは,[ ア ]の場合に,例えば,“’”であれば“’’”のように“’”を二つ続けた文字列に置換する処理のことです。
|
C主任: |
バインド機構を利用するというのはどういう方法ですか。
|
E氏: |
はい。これは,プレースホルダと呼ばれる一時的な特殊文字を使用してSQL文のひな形を用意しておき,後で実際の値(変数)を割り当ててSQL文を完成させる方法です。変数は[ a ]にエスケープ処理されるので,DBMSの種類によって異なるエスケープ処理を意識する必要がなくなります。
|
C主任: |
なるほど。
|
E氏: |
次にWebアプリケーションファイアウォールですが,これは[ b ]のルールを登録する,いわゆるホワイトリスト方式のシステムで,ルールにないアクセスを阻止することができます。しかし,今からハードウェアやソフトウェアを手配してルールの設定をチューニングするのは時間が掛かるので,Webサイトの再開がいつになるか分かりません。お勧めするのは,SQL文を構成するすべての変数にエスケープ処理を施す方法です。
|
C主任: |
部長からは,Webサイト再開を催促されているのですが,エスケープ処理には,どれぐらい掛かりますか。
|
E氏: |
すべてのWebアプリケーションプログラムをチェックして書換えを行うと,10日間は掛かると思います。
|
C主任: |
それでは早速,プログラムの修正に取り組むように,部長に提案してみます。
|