Rumah  >  Artikel  >  pembangunan bahagian belakang  >  php利用 addslashes函数实现sql防注入实例讲解

php利用 addslashes函数实现sql防注入实例讲解

怪我咯
怪我咯asal
2017-05-22 12:00:264146semak imbas

我们知道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=&#39;test&#39;>test</a>"; //定义包含特殊字符的字符串 
$new=htmlspecialchars($str,ent_quotes);  //进行转换操作 
echo $new;           //输出转换结果 
//不过输出时要用到 
$str="jane & &#39;tarzan&#39;";  //定义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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn