很好介绍说明了addslashes和mysql_real_escape_区别虽然国内很多PHP coder仍在依靠addslashes防止SQL注入(包括我在内)我还是建议大家加强中文防止SQL注入检查addslashes问题在于黑客可以用0xbf27来代替单引号而addslashes只是将0xbf27修改为0xbf5c27成为个有效多字节其中0xbf5c仍会被看作是单引号所以addslashes无法成功拦截
当然addslashes也不是毫无用处它是用于单字节串处理多字节还是用mysql_real_escape_吧
另外对于php手册中get_magic_quotes_gpc举例:
(!get_magic_quotes_gpc) {
$lastname = addslashes($_POST[‘lastname’]);
} {
$lastname = $_POST[‘lastname’];
}
最好对magic_quotes_gpc已经开放情况下还是对$_POST[’lastname’]进行检查下
再说下mysql_real_escape_和mysql_escape_这2个区别:
mysql_real_escape_ 必须在(PHP 4 >= 4.3.0, PHP 5)情况下才能使用否则只能用 mysql_escape_ 两者区别是:
mysql_real_escape_ 考虑到连接当前集而mysql_escape_ 不考虑
整理总结下:
addslashes 是强行加;
mysql_real_escape_ 会判断集但是对PHP版本有要求;
mysql_escape_不考虑连接当前集
最新评论