- 防止XSS攻击的方法
-
采用成熟的转义库,对需要用户输入的文本进行处理,输出HTML时处理
-
页面meta添加Content-Security-Policy属性,启用浏览器支持的CSP
-
页面添加脚本,改写append和appendChild的方法,拦截不在白名单的script或者iframe
-
服务器设置cookie 属性httpOnly和secure,防止攻击者盗取和更改重要隐秘cookie
-
服务器将http升级为https,或者将http重定向到https
-
服务器专区对链接上的脚本进行过滤,直接拒绝访问,返回412状态码
-
记录Log,记录证据,向工信部投诉
-
【改写append和appendChild的方法,拦截不在白名单的script或者iframe】 具体的代码如下:
<script>
// append方法同理
Element.prototype._appendChild = Element.prototype.appendChild
Element.prototype.appendChild = function(Elem){
const whiteList = ['baidu.com']
var srcFilterTags = ['script', 'iframe'];
console.log(srcFilterTags.indexOf(Elem.nodeName.toLocaleLowerCase()) > -1 && whiteList.indexOf(Elem.src)<=-1)
if(srcFilterTags.indexOf(Elem.nodeName.toLocaleLowerCase()) > -1 && whiteList.indexOf(Elem.src)<=-1){
console.log('hhhh,被劫持啦')
return
}else{
console.log('append:',Elem)
return this._appendChild(Elem)
}
}
setTimeout(function(){
var script = document.createElement("script");
script.src = 'http://test.com/qiho-h5/jqg/shendun_test.js'
document.head.appendChild(script);
}, 1000)
</script>