SQLインジェクションの対策としては不完全である
■magic_quotes_gpcについて
php.iniの設定に「magic_quotes_gpc=On」と書き足せば’(シングルクォーテーション)、”(ダブルクォーテーション)、\(バックスラッシュ) 、NULLを自動的にエスケープ処理してくれる設定(ディレクティブ)。
エスケープ処理を取り除く時(magic_quotes_gpcがonに対して)
PHPの関数、stripslashes()を使用すれば自動エスケープされる前の文字列に戻せる
$before_str = 'test\'s test'; $after_str = stripslashes($before_str); echo $after_str;//test's test
■対策
- PDO::quoteメソッドを使用する
- mysql_escape_stringを使用する
- Prepared Statementを使用する
ユーザがSQL文を文字列結合などで組み立てる場合、エスケープ漏れなどが起こりやすい。従って、3番目が最良の手法である。