回答面试的话:(简单说即可)
XSS攻击就是指 不法分子在浏览器中执行恶意脚本,然后拿到用户的信息进行操作,主要分为存储型、反射型和文档型,防范措施有:
- 一个信念:不要相信用户的任何输入,对输入的内容进行转码或者过滤,让其不可执行
- 两个利用:利用 浏览器中的内容安全策略CSP、利用Cookie的HttpOnly属性
1.XSS全称
? XSS:(全称Cross Site Scripting ),即跨站脚本,为了和CSS区分,故叫XSS。
2.XSS是啥?能干啥
XSS攻击是指 浏览器中执行恶意脚本,拿到用户信息,并进行的不法操作。
这些不法操作可以完成以下事情:
- 窃取Cookie
- 监听用户行为,比如输入账号密码后直接发送到黑客服务器
- 修改DOM伪造登录表单
- 在页面中生成浮窗广告
3.XSS攻击实现的三种方式
1. 存储型
? 存储型,就是将恶意脚本存储到服务端的的数据库,然后再客户端执行这些脚本,从而达到攻击。
? 场景:
? 比如:我们在他们会再留言评论区提交一段脚本代码,那评论内容就存到了数据库,在页面渲染评论区的时候,就直接执行了这段恶意脚本的评论内容,相当于执行一段位置逻辑的JS代码,是很可怕的。
所以,前后端对用户的这种输入要进行转义。
2. 反射性
? 反射型,就是将恶意脚本作为网络请求的一部分。
? **场景:**比如作为请求参数:
? http://xxxxx.com?title=<script>alert("死定了")</script>
? 这样,在服务器会拿到title参数,然后将内容返回给浏览器,浏览器将这些内容作为HTML的一部分解析,发现是一个脚本,直接执行,这样就被攻击了。
? 之所以叫反射型,是因为恶意脚本是通过作为网络请求的参数,经过服务器,然后再反射到HTML文档中,解析执行。和存储型不一样的是,服务器并不会存储这些恶意脚本。
3.文档型
? 文档型,**就是在数据传输过程中,劫持到网络数据包,然后修改里面的html文档,**从未进行攻击。
? 这种方式包括WIFI路由器劫持、本地恶意软件 等
4.防范措施
XSS攻击的共同点:都是让恶意脚本直接能在浏览器中执行。
所以我们要避免这些恶意脚本代码的执行:一个信念,两个利用。
1. 一个信念
? 千万不要相信任何用户的输入。
? 无论在前端或者服务端,都要对用户的输入进行转码 或过滤
? 转码
? 如:<script>alert("死定了")</script> 转义之后
? <script>alert('死定了')</script> 这样的代码在html解析过程中就无法执行了。
? 过滤
? 将script 标签给删除,服务端接收请求时,拿到script标签直接删除。
2. 两个利用
? 利用CSP
? CSP,即浏览器中的内容安全策略,就是由服务器决定浏览器加载哪些资源,具体可以完成以下功能:
-
限制其他域下的资源加载 -
禁止向其他域提交数据 -
提供上报机制,及时发现XSS攻击 利用HttpOnly 很多XSS攻击都是通过窃取Cookie方式,而设置Cookie的HttpOnly属性为false后,JS便无法读取Cookie的值。
?
|