友情链接: 伦理电影手机在线观看 伦理电影在线观看 葡京国际 澳门葡京国际 日本三级片 韩国三级片 福建十三水下载 十三水APP发牌规律 官网十三水游戏 十三水规则 十三水推算技巧 福州十三水下载 打十三水技巧 手机版十三水官网 微信十三水赌博群 十三水棋牌赢钱 十三水棋牌游戏下载 十三水游戏手机官网 十三水摆牌技巧 十三水微信红包群 十三水的微信群 手机十三水下载 大玩家福建十三水 大玩家福建十三水官网 莆田游戏十三水 十三水游戏平台 同城游戏十三水 微信赌博十三水 无押金十三水微信群 网络十三水发牌规律 微信十三水游戏 十三水游戏下载 十三水玩法 风赢十三水官方网站 单机十三水游戏下载 福建十三水怎么玩 福州十三水微信群赌钱 风赢十三水技巧 边锋十三水下载 福建大玩家十三水官网 十三水游戏规则 十三水棋牌在线游戏 十三水群 大玩家十三水官方网站 开心十三张手机版 开心十三水下载 众娱平台十三水 微信十三水群 微信赌博十三张 永康十三水官网 永康十三水规则 闲来十三水官网 正规的现金棋牌游戏 正规的现金十三水 最火十三水平台 下载边锋游戏大厅 闲来玩十三水官方网站 网络十三水赢钱技巧 永康十三水安卓版 十三水技巧规律 十三水棋牌赢钱玩法 十三水棋牌怎么赢钱 棋牌合作平台 十三水代理官方网站 十三水在线玩 十三水游戏群 十三水烂牌技巧 十三张棋牌下载 全民棋牌官网下载 开心十三张官方网站 天天福建十三水代理
Warning: Cannot modify header information - headers already sent by (output started at D:\localuser\ftp502112\Web\index.php:69) in D:\localuser\ftp502112\Web\init.php on line 9  php自带的几个防止sql注入的函数 - 慕轲博客-建立自己的个人自媒体博客

心情碎语:等雨停的时候往往雨不会停,等人来的时候往往人不会来。

您的位置:慕轲博客 >特效代码> php自带的几个防止sql注入的函数

php自带的几个防止sql注入的函数

SQL注入攻击是黑客攻击网站最常用的手段。如果你的站点没有使用严格的用户输入检验,那么常容易遭到SQL注入攻击。SQL注入攻击通常通过给站点数据库提交不良的数据或查询语句来实现,很可能使数据库中的纪录遭到暴露,更改或被删除。

为了防止SQL注入攻击,PHP自带一个功能可以对输入的字符串进行处理,可以在较底层对输入进行安全上的初步处理,也即Magic Quotes。(php.ini magic_quotes_gpc)。默认情况下开启,如果magic_quotes_gpc选项启用,那么输入的字符串中的单引号,双引号和其它一些字符前将会被自动加 上反斜杠。

但Magic Quotes并不是一个很通用的解决方案,没能屏蔽所有有潜在危险的字符,并且在许多服务器上Magic Quotes并没有被启用。所以,我们还需要使用其它多种方法来防止SQL注入。

许 多数据库本身就提供这种输入数据处理功能。例如PHP的MySQL操作函数中有addslashes()、mysql_real_escape_string()、mysql_escape_string()等函数,可将特殊字符和可能引起数据库操作出错的字 符转义。那么这三个功能函数之间有什么却别呢?下面我们就来详细讲述下。

虽然国内很多PHP程序员仍在依靠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不考虑连接的当前字符集。


dz中的防止sql注入就是用addslashes这个函数,同时在dthmlspecialchars这个函数中有进行一些替换

$string = preg_replace(/&((#(d{3,5}|x[a-fA-F0-9]{4}));)/, &1


这个替换解决了注入的问题,同时也解决了中文乱码的一些问题

---

转载请注明本文标题和链接:《php自带的几个防止sql注入的函数

分享到:

发表评论

39 + 45 =
路人甲 表情
Ctrl+Enter快速提交