CSRF
- CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造。
- CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求。
- 造成的问题:个人隐私泄露以及财产安全。
CSRF攻击示意图

- 总结一下,简单的csrf攻击是通过用户已经产生cookie的情况且未退出登录,钓鱼网站通过伪造页面来请求原始网站处理业务,达到模拟用户操作的目的
防止 CSRF 攻击
方式一:可以通过验证码的手段,因为验证码是直接发到用户的手里,所以黑客破解的成功性不大
方式二:在没有验证码的年代,可以通过生成随机的token来校验网站是否正确
步骤
- 在客户端向后端请求界面数据的时候,后端会往响应中的 cookie 中设置 csrf_token(随机变化) 的值
- 在 Form 表单中添加一个隐藏的的字段,值也是 csrf_token
- 在用户点击提交的时候,会带上这两个值向后台发起请求
- 后端接受到请求,以会以下几件事件:
- 从 cookie中取出 csrf_token
- 从 表单数据中取出来隐藏的 csrf_token 的值
- 进行对比
- 如果比较之后两值一样,那么代表是正常的请求,如果没取到或者比较不一样,代表不是正常的请求,不执行下一步操作
可能有的人会问,把这么重要的csrf_token放到cookie里不是很不安全吗,随便一个F12就可以看到cookie,黑客获取cookie不照样可以模拟用户的行为吗
注:因为同源策略,即协议,域名,端口都相同的情况下为同源,浏览器带有同源策略,在没有明确授权的前提下,不同源之间不能进行资源访问,也就是说钓鱼网站无法拿到原始网站的cookie,模拟不了业务处理,这也是为什么我们要把csrf_token放到cookie中,确保网站业务处理时的安全
跨站请求伪造(csrf)的防护手段
原文:https://www.cnblogs.com/williamweson/p/13031491.html