本文章来给大家简单介绍关于在php中addslashes() ,mysql_real_escape_string() 和mysql_escape_string()的一些用法与区别,有举的朋友可参考. 以前还真没有关注过这面的事情.自己在写的时候都是用了一个很简单的函数addslashes() 函数在指定的预定义字符前添加反斜杠. 这些预定义字符是: •单引号 (') •双引号 (") •反斜杠 () •NULL 实例代码如下:
虽然国内很多PHP程序员仍在依靠addslashes防止SQL注入,还是建议大家加强中文防止SQL注入的检查.addslashes的问题在 于黑客 可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xbf5c27,成为一个有效的多字节字符,其中的0xbf5c仍会 被看作是单引号,所以addslashes无法成功拦截. 当然addslashes也不是毫无用处,它是用于单字节字符串的处理,多字节字符还是用mysql_real_escape_string吧.另外对于php手册中get_magic_quotes_gpc的举例: 实例代码如下:
最好对magic_quotes_gpc已经开放的情况下,还是对$_POST[’lastname’]进行检查一下. 再说下mysql_real_escape_string和mysql_escape_string这2个函数的区别: mysql_real_escape_string 必须在(PHP 4 >= 4.3.0, PHP 5)的情况下才能使用. mysql_escape_string (PHP 4 >= 4.0.3, PHP 5, 注意:在PHP5.3中已经弃用这种方法,不推荐使用),
两者的区别是:mysql_real_escape_string 考虑到连接的当前字符集,而mysql_escape_string 不考虑. 总结一下: 实例代码如下: (责任编辑:admin) |