关键字前瞻:
1.XSS:全称Cross Site Scripting(跨站脚本攻击),跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该网页时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
1.XSS的分类
- 反射型
含义:攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。
特点:<非持久化>,必须用户点击带有特定参数的连接才能引起。
影响范围:<小>,仅执行脚本的用户。
- 存储型
含义:指应用程序通过Web请求获取不可信赖的数据,在未检验数据是否存在XSS代码的情况下,便将其存入数据库。当下一次从数据库中获取该数据时程序也未对其进行过滤,页面再次执行XSS代码,存储型XSS可以持续攻击用户。
特点:<持久化>
- DOM-Based型
含义:本质是一种特殊类型的反射性XSS,通过JS操作DOM树动态地输出数据到页面,而不依赖于将数据提交到服务端,它是基于DOM文档对象模型的一种漏洞。
与反射型的不同点:反射型XSS是经过后端语言后,页面引用后端输出生效的。而DOMXSS是经过JS对DOM树直接操作后插入到页面。
2.XSS的危害
- 盗取cookie
- 盗取账户
- 恶意软件下载
- 键盘记录
- 广告引流
3.防御方式
- 为cookie设置http-only
- 输入处理:对用户的输入进行合理的验证,对特殊字符(如<、>、'、"等)以及<script>、javascript等进行过滤。
- 输出处理:对数据输出HTML上下文中不同位置进行恰当的输出编码。如:“ < ” 进行输出编码为 " < " 等。