addslashes和mysql_real_escape_string

本文介绍的是用 mysql_real_escape_string对用户提交数据进行整理处理和通过addslashes以及mysql_escape_string这3个类似的功能函数的区别。经过转义的数据可以直接插入到数据库中。

很好的说明了addslashes和mysql_real_escape_string的区别,虽然国内很多PHP coder仍在依靠addslashes防止SQL注入(包括我在内),我还是建议大家加强中文防止SQL注入的检查。addslashes的问题在于黑客可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xbf5c27,成为一个有效的多字节字符,其中的0xbf5c仍会被看作是单引号,所以addslashes无法成功拦截。

当然addslashes也不是毫无用处,它是用于单字节字符串的处理,多字节字符还是用mysql_real_escape_string吧。

另外对于php手册中get_magic_quotes_gpc的举例:

if (!get_magic_quotes_gpc()) {

$lastname = addslashes($_POST[‘lastname’]);

} else {

$lastname = $_POST[‘lastname’];

}

最好对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 ,两者的区别是:

mysql_real_escape_string 考虑到连接的当前字符集,而mysql_escape_string 不考虑。

总结一下:

addslashes() 是强行加;

mysql_real_escape_string() 会判断字符集,但是对PHP版本有要求;

mysql_escape_string不考虑连接的当前字符集。

 
mysql中的mysql_real_connect连接参数设置
在前一篇文章中,讲述了如何进行mysql源程序代码的编译链接,但是没有讲述运行情况,在按照上一篇文章代码下进行编译运行后,发现无法链接数据库文件,显然是在mysql_real_connect()函数中出现了问题。在mysql的英...查看完整版>>mysql中的mysql_real_connect连接参数设置
 
打破键盘陈规 联想放大Delete与Escape两键
  7月7日消息,经过历时一年的研究后,联想(Lenovo)在新推出的笔记本电脑ThinkPad系列中,做了一项设计新变革。但这项改变不像时下流行把笔记本电脑变得更轻薄,而是破天荒在键盘上安装了特大号的“Delete”与“Es...查看完整版>>打破键盘陈规 联想放大Delete与Escape两键
 
URL编码转换,escape() encodeURI() encodeURIComponent()
escape() 方法:采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符...查看完整版>>URL编码转换,escape() encodeURI() encodeURIComponent()
 
ASP接收Ajax 在POST方式下发送的escape编码中的个别乱码
看代码: var xmlhttp=getHTTPObject(); var post="test·test+test·"; xmlhttp.open('POST', 'test.asp?random='+Math.random(), true); xmlhttp.setrequestheader("content-length",post.length); ...查看完整版>>ASP接收Ajax 在POST方式下发送的escape编码中的个别乱码
 
escape,encodeURI,encodeURIComponent函数比较
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent1、 传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。...查看完整版>>escape,encodeURI,encodeURIComponent函数比较