一,CSRF 跨站请求伪造
1.攻击原理:用户用账号、密码登录网站A > 网站A下发cookie > 用户访问网站B 时,被引诱点击了某个链接,进入了网站A
2.防御措施:
-
Token 验证,在正确的页面登录的时候附带一个Token
-
Referer 页面来源验证
-
隐藏令牌,将令牌隐藏在http head 头中,而不会放在链接上
二,XSS 跨域脚本攻击 https://www.imooc.com/video/14371
1.攻击原理:
-
盗用cookie 获取敏感信息
-
破坏正常的页面结构,插入恶意内容
-
实现DDos 攻击效果,比如使http 请求头超长,从而无法正常访问页面
2.攻击方式:
-
反射型:前端发起请求时,XSS 代码出现在URL 中,作为输入提交到服务器端,服务器解析请求数据后,将带有XSS 的数据传给浏览器,浏览器解析并执行XSS 代码。
-
存储型:提交的XSS代码会存储在服务器端,比如数据库,下次请求目标页面时,不用再提交XSS
3.防御措施:
-
编码:前端提交的敏感信息进行编码
-
对用户输入的数据进行HTML Entity 编码,如" & < > space
-
-
过滤:在前端显示后端返回的原样内容的时候,对其进行过滤
-
移除DOM 属性,如onerror;移除style script iframe 节点
-
-
校正:校正页面结构
-
避免直接对HTML Entity 解码
-
使用DOM Parse 转换,校正不配对的DOM 标签
-
DOM Parse :将文本解析成DOM 对象
-
-
4.实际操作
1)编码
2)encode.js 库可以对HTML Entity反转移,如" 转 "
3)domParse.js 可以解析DOM 字符串
-
-
str 是字符串类型的DO,如"<p>xx</p>"
-
start 标签头
-
end 标签尾
-
chars 文本
-
comment 注释
-
4)还需要过滤危险标签和属性
img空连接时onerror 事件自动执行的特性,是XSS 攻击常用的手段。也可以用button 引诱用户攻击