XSS 是指恶意攻击者利用网站没有对用户提交数据进行安全处理的缺陷
在 web 页面或相关资源中嵌入了恶意代码
使别的用户访问都会执行相应的嵌入代码。
攻击者通过 XSS 攻击,
能在用户的浏览器上伪装成用户做很多可怕的事情
比如这里通过 XSS
获取了 localStorage 里的信息
没有充分控制不可信数据在页面中的展现
<script>...绝对不要将不可信数据放在这...</script> 直接放置在script内
<!--...绝对不要将不可信数据放在这....--> 放在HTML注释内
<div ...绝对不要将不可信数据放在这...=test /> 放在属性名
<绝对不要将不可信数据放在这... href="/test" /> 放在标签名内
<style>...绝对不要将不可信数据放在这...</style> 直接放在CSS中
var id = this.$route.query.id
document.write(`
<div>
产品ID: ${id}
</div>
`)
来自用户输入的数据,都是不可信数据
axios(...)
.then({ data } => {
el.innnerHTML = data.userComment
})
<body>...将不可信数据放在这前进行转义...</body>
<div>...将不可信数据放在这前进行转义...</div>
<div attr=...将不可信数据放在这前进行转义...>content</div> 在无引号属性间
<div attr='... 将不可信数据放在这前进行转义...'>content</div> 在单引号属性间
<div attr="...将不可信数据放在这前进行转义...">content</div> 在双引号属性间
<script>alert('... 将不可信数据放在这前进行转义...')</script> 在被引号包含的字符串
<script>x='... 将不可信数据放在这前进行转义...'</script> 被引号包含的表达式