1、CSRF
基本概念和缩写:
CSRF,通常称为跨站请求伪造,英文名Cross-site request forgery 缩写CSRF
攻击原理
攻击前提条件:
- 在注册网站登录过
- 网站某个接口有漏洞
防御措施
- Token验证(访问接口时带上token)
- Referer验证(服务器判断页面来源是否是该网站下的)
- 隐藏令牌
2、XSS
基本概念和缩写:
XSS(cross-site scripting 跨域脚本攻击)
攻击原理
向页面注入脚本并运行
攻击方式:
- 反射型
- 存储型
反射型
两点条件:
发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回浏览器,最后浏览器解析执行XSS代码。
触发方式:
自动触发:通过img标签如: http://localhost:3000/?xss=<img src="null" onerror="alert(111)"/>
引诱触发:http://localhost:3000/?xss=<p onclick="alert(点我啊)">点我啊</p>
iframe方式:http://localhost:3000/?xss=<iframe src=" baidu.com/1.html"></iframe>常用来插入广告之类的。
存储型
和反射型XSS的差别仅在于,提交的代码会存储在服务器端(数据库,内存,文件系统),下次请求目标页时不用再提交XSS代码。
防御措施:
- 第一步:编码
对用户输入的数据进行HTML Entity编码 - 第二步:过滤
移除用户上传的DOM属性,如onerrror等
移除style节点、script节点、iframe节点等 - 第三步:校正
避免直接对HTML Entity解码 使用DOM
Parse转化,校对不配对的DOM标签
3、区别:
CSRF是依赖于登录该网站并且利用该网站接口的漏洞去执行接口,XSS是通过注入脚本的方式去执行相应的js操作。