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が使われているか調査

ECcubeでaddslashesが使われているか調査


結構出てくるじゃないですか。普通に使っているのかもしれませんよ。

ちなみにmysql_escape_stringは二つのシステムは0件、mysql_real_escape_stringはチラホラとは出てきました。
が、addslashesよりは少ないです。


ということは・・・addslashesなんじゃない?やっぱり。
間違ってたらコメントで指摘してください。


コメントをどうぞ