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

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

 

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

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

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

&(和号)成为&

"(双引号)成为"

'(单引号)成为'

<(小于)成为&lt;

>(大于)成为&gt;  

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

  参数:

     

1、定位问题:

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

  

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

 

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

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


TAG: XSS 安全测试

 

评分:0

我来说两句

Open Toolbar