SQLインジェクション① 根本的な対策
SQLインジェクション対策
※インジェクション=コード挿入
①システムから出力されるエラーメッセージをそのまま表示しない。
プログラミングによる例外処理、ブラウザによるエラーメッセージをそのまま表示すると、
ハッカーにエラーの解決策のヒントを与えてしまう事になる。
システムによるエラーメッセージはログに出力し、ブラウザに表示するメッセージは最低限のものにする事。
②アクセス権限を制限する
WEBサーバーにアクセスするユーザーに対して管理者権限を与えない。
③入力値を制限する
数字限定等の制限を設ける。
「'(シングルコーテーション)」「”(ダブルコーテーション)」「/」「\」「;」「\n(改行)」は、
SQLインジェクションを行う為の有効な入力値なのでそもそも入力を許可しない。
④ログを調査する
DBサーバーに対するSQL命令文ログ
WEBサーバーに対するアクセスログ
におかしなものがないかチェックを行う。
⑤入力値をSQL文に組み込む際にはバインド機構(バインド変数)を用いる
VB.NETの場合
Dim strSql As String = “SELECT UserID,Passwd FROM Users WHERE UserID = @UserID AND Passwd = @Passwd”
略
Call SqlCommand.Parameters.Add(“@id”,id入力値)
Call SqlCommand.Parameters.Add(“@Passwd”,Password入力値)
この処理を通す事でSQL文には悪意あるSQL命令が入れられなくなる。
⑥エスケープ処理を施す
上記③の入力値に対して置換を行う。
別頁参照