一、XSS攻击
XSS全称Cross-site scripting,即跨站脚本攻击,千方百计注入并执行恶意脚本。
1、XSS造成的危害:窃取cookie、进一步进行CSRF攻击,劫持流量、插入广告、置入木马、获取用户信息等。
2、注入方式:url参数注入、输入框注入
3、XSS分类
graph LR
XSS分类 --> 反射型--> 浏览器提交恶意代码到服务端 -->服务端将恶意代码传回客户端
XSS分类 --> 储存型--> 浏览器提交恶意代码到服务端_-->将恶意代码储存到数据库
XSS分类 --> DOM型 --> 恶意代码仅在客户端运行
- 反射型:主要通过url参数注入
- 储存型:通过输入框提交恶意代码到服务端,并进行储存,给用户带来的危害的最大的。
如何防御: 攻击是先注入再执行的,因此要防止注入、防止执行。 对输入进行过滤,对输出进行转义。
graph LR
预防 --> 校验 -->对输入格式进行校验,如邮箱地址格式等
预防 --> 过滤 -->过滤script\iframe等特殊标签
过滤 --> 过滤onclick\onerror\onfocus等事件属性
预防 --> 编码转义 -->对要渲染的内容做编码转义,防止执行
预防 --> 限制 --> 限制输入长度,因为恶意攻击代码一般比较长
限制 --> cookie设置成http-only,因为XSS一般会采集用户的cookie
二、CSRF攻击
CSRF全称Cross-site request forgery,即跨站请求伪造,不注入脚本,侧重于请求伪造,盗用用户身份发送恶意请求。
如何防御
- 尽量使用POST
- 加入验证码
- 验证Referer(http请求头字段中,用于记录当前请求来源的地址)
- Anti CSRF Token
- 加入自定义Header
graph LR
如何防御 --> 尽量使用POST
如何防御 --> 加入验证码
如何防御 --> 验证Referer
如何防御 --> Anti`CSRF`Token -->1.在form表单或头信息中传递token
Anti`CSRF`Token -->2.token存储在服务端
Anti`CSRF`Token -->3.服务端通过拦截器验证有效性
Anti`CSRF`Token -->4.校验失败的拒绝请求
如何防御 --> 加入自定义Header