mysql_real_escape_string()のみで防げないSQLインジェクション
PHPアプリのSQLインジェクション対策として、mysql_real_escape_string()
等があるがこれだけでは万全ではないことがあるのでメモ。
例えば以下のSQLではmysql_real_escape_string()
を使っているが、脆弱性が存在する。
1 | $id = mysql_real_escape_string("1 OR 1=1"); |
mysql_real_escape_string()
では上記を防ぐことができない。
クエリ内の変数をシングルクォート('
)で囲むことで上記を防ぐことができる。
1 | $id = mysql_real_escape_string("1 OR 1=1"); |