XSS漏洞定位和修复方法——htmlspecialchars() 函数

安全测试】XSS漏洞定位和修复方法——htmlspecialchars() 函数


上一篇 / 下一篇  2011-08-25 18:49:11 / 个人分类:安全测试


测试的XXX的版本中,扫描器扫描出一个中威胁的XSS漏洞,对BUG定位和解决消耗了一定的时间,在咨询过安全测试组的同学后,终于弄清楚了解决的方法,现在根据结果倒推回来,有利于指导测试和帮助开同学定位类似的问题,所以就小分享一下。


在分析和解决这个XSS漏洞中会用到htmlspecialchars()函数,先简单介绍一下,详细可参考:http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp


定义:把一些预定义的字符转换为HTML实体,预定义的字符有:


&(和号)成为&


"(双引号)成为"


'(单引号)成为'


<(小于)成为<


>(大于)成为>  


语法:htmlspecialchars(string,quotestyle,character-set)


参数:


     




1、定位问题:


1)、和开发一起定位,检查php代码,发现已经使用了htmlspecialchars()函数对传递过来的参数进行了过滤:htmlspecialchars()函数


2)、但是扫描器还是扫出安全漏洞的结果,用脚本替换参数,重新发送请求:http://shop.qq.com/misc/join/download_file.php?pic_id=a'"&t=0.517103584544131,抓包查看返回结果,没有对单引号进行转义。






 
2、解决问题,htmlspecialchars()函数的第二个参数缺失时是默认不对单引号进行转义,解决方法是加上NT_QUOTES。






再次发送同样的请求http://shop.qq.com/misc/join/download_file.php?pic_id=a'"&t=0.517103584544131,抓包查看已经对单引号做了转义处理。



你可能感兴趣的:(其他)