我们都知道,常见的XSS漏洞都是通过参数中传入<script>的方式实现的,而这种XSS很容易通过php的htmlspecialchars处理掉。今天要说到的XSS比较牛,是通过UTF7-BOM来完成注入。 Gareth Heyes在 《XSS Lightsabre techniques》中最先提到这种XSS技术,原文如下: —————————————————————————————— CSS expressions with UTF-7 UTF-7 BOM character can force UTF-7 in a external style sheet Would you let me upload a style sheet? @charset ?UTF-7?; works But you don?t need it - +/v8 is all you need +/v8 HdhCmsTest2cto测试数据 body { font-family: ‘+AHgAJwA7AHgAcwBzADoAZQB4AHAAcgBlAHMAcwBpAG8AbgAoAGEAbA BlAHIAdAAoADEAKQApADsAZgBvAG4AdAAtAGYAYQBtAGkAbAB5ADoAJw-’; —————————————————————————————— 归纳起来,可以说是ie里面页面不能够以+/v8开头。 在实现json回调的时候尤其需要注意防止这种XSS。 比如土豆网的一个示例: http://HdhCmsTesttudou测试数据/my/channel/item.srv?icode=enQCgQKJTDs&callback=%2B%2Fv8%20%2BADwAaAB0AG0APgA8AGIAbwBkAHkAPgA8AHMAYwByAGkAcAB0AD4AYQBsAGUAcgB0ACgAMQApADsAPAAvAHMAYwByAGkAcAB0AD4APAAvAGIAbwBkAHkAPgA8AC8AaAB0AG0APg-%20xsadas (请使用IE6和IE7访问,IE8及以上已经解决了此bug) 知道了问题所在,解决起来就很简单了,我采取的方法是不接受除字母开头的方法名作为回调,大家可以根据情况采取相应的方法避免即可
查看更多关于IE utf7-BOM XSS漏洞 - 网站安全 - 自学php的详细内容...