CSRF跨站点请求伪造
(Cross Site Request Forgery)
攻击者盗用了用户的身份,
以用户的身份发送恶意请求,
但是对服务器来说这个请求是合理的,
这样就完成了攻击者的目标。
原理
• 用户打开浏览器,访问目标网站A,
输入用户名和密码请求登录
• 用户信息在通过认证后,
网站A产生一个 cookie 信息返回给浏览器,
这个时候用户可发送请求到网站A
• 用户在没有退出网站A之前
在同一个浏览器打开了另一个新网站B。
• 新网站B 收到用户请求之后返回一些 攻击代码,
并发出一个请求要求访问 网站A
• 浏览器收到这些攻击性代码之后,
根据 网站B 的请求
在用户不知道的情况下,
以用户的权限操作了cookie
并向网站A服务器发起了合法的请求。
预防CSRF攻击:
使用验证码
在表单中添加一个 随机的 数字或者字母验证码,
强制要求 用户 和 应用 进行直接的交互。
HTTP中 Referer 字段
它记录了 HTTP请求 的 来源地址。
检查是不是从 正确的 域名 访问过来,
使用token验证
在 HTTP请求头 中添加 token 字段,
并且在 服务器端 建立一个 拦截器 验证这个 token,
如果 token 不对,就拒绝这个请求。
referer是浏览器提供的
不同的浏览器可能在referer的实现上有自身的漏洞
