@blog.justoneplanet.info

日々勉強

$_GETと$_POSTのに格納された文字の自動エスケープ

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

■対策

  1. PDO::quoteメソッドを使用する
  2. mysql_escape_stringを使用する
  3. Prepared Statementを使用する

ユーザがSQL文を文字列結合などで組み立てる場合、エスケープ漏れなどが起こりやすい。従って、3番目が最良の手法である。

コメントはまだありません»

No comments yet.

RSS feed for comments on this post.TrackBack URL

Leave a comment