SQLインジェクション対策(SQL Injection対策)

利用者の入力値からSQL文を作成するプログラムの場合、管理者の予期しない条件文などをSQL文に入れられることで、DBから取り出したデータを表示する部分で予期しないデータを表示させられてしまう。

<対策>
・prepared statement(バインドメカニズム)を利用する。
・SQLへの入力値を制限する。
・SJISの文字コードを使用しない。
・SQL文内の変数はシングルクオーテーションで括る
・SQLの特殊文字を無効化
‘ → ‘
→\
0x00 → 削除

セカンドオーダーSQLインジェクション
入力時にエスケープ処理を施しても、DB登録時にエスケープ文字は登録されないので、DBからそのデータを取り出したときにSQLインジェクションが起きる。
・SQL文の発行時は常にSQLインジェクション対策を行う。

<その他対策>
・O/R(Object/Relational)マッピングの利用
・不必要なDBエラーを見せない。
・進入探知のためログの取得

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です