You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
var encodeHtmlProperty = function (string) {
if (!string) return string
return string.replace(/[<>&"]/g, function (char) {
return {
'"': '"',
''': ''',//ie中不支持一般用 ' 代替
}[char]
})
}
js注入防御
用JSON.stringify函数进行防御
<script>
var data = JSON.stringify("hello";alert(1);"")
</script>
富文本xss防御
使用黑名单方式进行过滤
var xssFilter = function(html){
if(!html) return ''
html = html.replace(/<\s*\/?script\s*>/g,'')
html = html.replace(/javascript:[^'"]*/g,'')
...onerror
...JavaScript:
return html
}
使用黑名单会有很多种情况,所以对于富文本的防御一般不使用黑名单,而是使用白名单
使用白名单进行过滤
按白名单对部分标签和属性进行保留
//伪代码
var whiteList = {
'img':['src'],
'a':['href'],
}
var xssFilter = function(html){
if(!html) return ''
var nodeList =getElements(html)
nodeList.forEach((element,index)=>{
if(!~Object.keys(whiteList).indexOf(element.nodeName)){
//去掉元素
element.remove()
}
var attrs = element.attributes
for(var i=0;i<attrs;i++){
if(!~whiteList[element.nodeName].indexOf(attrs[i])){
//去掉属性
element.attr(attrs[i],null)
}
}
})
}
xss攻击原理
xss攻击危害
xss攻击后台管理系统
xss分类
反射型
存储型
xss攻击注入点
浏览器自带防御方案
xss防御和处理
CSP
php中防御xss
xss测试用例
The text was updated successfully, but these errors were encountered: