我们知道addslashes()函数的作用是对输入字符串中的某些预定义字符前添加反斜杠。那么它怎么又与我们的防sql注入扯上关系呢?什么又是sql注入呢?
SQL注入攻击是黑客攻击网站最常用的手段。如果你的站点没有使用严格的用户输入检验,那么常容易遭到SQL注入攻击。SQL注入攻击通常通过给站点数据库提交不良的数据或查询语句
来实现,很可能使数据库中的纪录遭到暴露,更改或被删除。本篇文章主要介绍php利用 addslashes函数实现sql防注入实例讲解,通过实例讲述采用addslashes函数对于sql防注入的用处。
示例
参数'a..z'界定所有大小写字母均被转义,代码如下:
echo addcslashes('foo[ ]','a..z'); //输出:foo[ ] $str="is your name o'reilly?"; //定义字符串,其中包括需要转义的字符 echo addslashes($str); //输出经过转义的字符串
定义和用法:
addslashes() 函数在指定的预定义字符前添加反斜杠.
这些预定义字符是:单引号 ('),双引号 ("),反斜杠 (),null
语法:
addslashes(string)
当然这个函数更安全,实例代码如下:
$str="<a href='test'>test</a>"; //定义包含特殊字符的字符串 $new=htmlspecialchars($str,ent_quotes); //进行转换操作 echo $new; //输出转换结果 //不过输出时要用到 $str="jane & 'tarzan'"; //定义html字符串 echo html_entity_decode($str); //输出转换后的内容 echo "<br/>"; echo html_entity_decode($str,ent_quotes); //有可选参数输出的内容
本篇对于PHP安全程序设计来说具有不错的参考借鉴价值。不过使用addslashes防止SQL注入黑客是有办法绕过的,也不是那么的安全。很多PHP程序员仍在依靠addslashes防止SQL注
入,还是建议大家加强中文防止SQL注入的检查。addslashes的问题在 于黑客 可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xbf5c27,成为一个有效的多字节字符,
其中的0xbf5c仍会 被看作是单引号,所以addslashes无法成功拦截。当然addslashes也不是毫无用处,它是用于单字节字符串的处理
【相关文章推荐】:
1.php addslashes()函数和stripslashes()函数实例详解
2.php stripslashes()函数和addslashes()函数的区别实例详
Atas ialah kandungan terperinci php利用 addslashes函数实现sql防注入实例讲解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!