PHPのaddslashesとmysql_escape_stringとmysql_real_escape_stringについて
PHPのSQLインジェクション対策は、必ずエスケープする事が必要なので、
addslashes
mysql_escape_string
mysql_real_escape_string
のどれかを使う事になるが、ネット上の情報を探していると、どうも情報が交錯している&2006年の記事だったりと信憑性が薄い。
果たしてどれを使うのが一番ベスト解なのか?
指南書でもあるPHP サイバーテロの技法では、
addslashesを必ず使用すべし。とある。
しかしこの初版は2005年。自分が買ったのは2009年6月4日 初版第八刷。特に変更は無い模様。
ところが、
http://gihyo.jp/dev/serial/01/php-security/0028?page=2
では使用禁止の禁忌として取り扱っている。
ネット上を探しても、確かに脆弱性が発見されているから使うな。という記事が多い。
ちなみにmysql_escape_stringはNGらしい。これを使うならmysql_real_escape_stringを使用せよ。とある。
ただ個人的には指南書の通りaddslashesでいきたいと思うのだが、
さてどうしたものか。
という事で、いい事を思いつく。
脆弱性が発見されて禁忌関数という事なのであれば、WordPressやECcubeでは使用されていないはず!
と思い、ソースコードを調べてみた。
WordPress内でaddslashesが使われているか調査
結構出てくるじゃないですか。普通に使っているのかもしれませんよ。
ちなみにmysql_escape_stringは二つのシステムは0件、mysql_real_escape_stringはチラホラとは出てきました。
が、addslashesよりは少ないです。
ということは・・・addslashesなんじゃない?やっぱり。
間違ってたらコメントで指摘してください。
ディスカッション
コメント一覧
まだ、コメントがありません