摘要:由于无视目标字符串的编码,直接按照二进制字节对字符串添加下划线,会导致很多注入隐患。传统的函数会直接无视掉而直接对后面的加下划线,结果变成了。防止注入的话,能够预编译是最好,不能的话应该按照当前的编码,用前缀的字符串处理函数手写一个。
由于addslashes无视目标字符串的编码,直接按照二进制字节对字符串添加下划线,会导致很多注入隐患。
比如说gbk环境下,有一个宽字符是xbfx27。虽然它不在gbk的编码范围内,但是会把它当成宽字符解析,攻击者可以通过构造url参数等方式传进来。传统的addslashes函数会直接无视掉xbf而直接对后面的x27加下划线,结果变成了xbfx5cx27。这样前面两个字节构成宽字符,后面的x27就会多带带被解析。
防止注入的话,能够预编译是最好,不能的话应该按照当前的编码,用mb前缀的字符串处理函数手写一个。
比如下面这个:
function mb_addslashes($str, $enco) { $retstr = ""; $len = mb_strlen($str, $enco); for($i = 0; $i < $len; $i++) { $chr = mb_substr($str, $i, 1, $enco); if($chr == " ") $retstr .= " "; else if($chr == """) $retstr .= """; else if($chr == """) $retstr .= """; else if($chr == "") $retstr .= ""; else $retstr .= $chr; } return $retstr; }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/31857.html
摘要:我们做代码审计之前选好工具也是十分必要的。一审计工具介绍代码审计系统功能介绍是一款基于开发的针对代码安全审计的软件。自定义审计规则。黑盒敏感信息泄露一键审计。挖掘这种漏洞主要是检查是否使用了,搜索和。 GitChat 作者:汤青松原文:PHP 开发者如何做代码审查?关注微信公众号:「GitChat 技术杂谈」 一本正经的讲技术 【不要错过文末彩蛋】 前言 工欲善其事,必先利其器。我们做...
摘要:参考中如何防止注入参数化查询为什么能够防止注入上面提供的资料比较多,下面根据自己的理解整理出来。使用的预处理参数化查询可以有效防止注入。我们在上面预处理参数化查询是在中进行防注入操作的,其实也内置了一个预处理的模拟器,叫做。 由于segmentfault在处理特殊字符时也并非完美,所以下面文章中有些符号被转换了,请到本人博客下载原文txt http://www.yunxi365.cn/...
阅读 3475·2021-11-24 09:39
阅读 757·2019-08-30 14:22
阅读 3015·2019-08-30 13:13
阅读 2286·2019-08-29 17:06
阅读 2871·2019-08-29 16:22
阅读 1238·2019-08-29 10:58
阅读 2382·2019-08-26 13:47
阅读 1569·2019-08-26 11:39