• 跨站请求伪造(csrf)的防护手段


    CSRF

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

    CSRF攻击示意图

    • 客户端访问服务器时没有同服务器做安全验证

    • 总结一下,简单的csrf攻击是通过用户已经产生cookie的情况且未退出登录,钓鱼网站通过伪造页面来请求原始网站处理业务,达到模拟用户操作的目的

    防止 CSRF 攻击

    方式一:可以通过验证码的手段,因为验证码是直接发到用户的手里,所以黑客破解的成功性不大

    方式二:在没有验证码的年代,可以通过生成随机的token来校验网站是否正确

    步骤
    1. 在客户端向后端请求界面数据的时候,后端会往响应中的 cookie 中设置 csrf_token(随机变化) 的值
    2. 在 Form 表单中添加一个隐藏的的字段,值也是 csrf_token
    3. 在用户点击提交的时候,会带上这两个值向后台发起请求
    4. 后端接受到请求,以会以下几件事件:
      • 从 cookie中取出 csrf_token
      • 从 表单数据中取出来隐藏的 csrf_token 的值
      • 进行对比
    5. 如果比较之后两值一样,那么代表是正常的请求,如果没取到或者比较不一样,代表不是正常的请求,不执行下一步操作

    可能有的人会问,把这么重要的csrf_token放到cookie里不是很不安全吗,随便一个F12就可以看到cookie,黑客获取cookie不照样可以模拟用户的行为吗

    注:因为同源策略,即协议,域名,端口都相同的情况下为同源,浏览器带有同源策略,在没有明确授权的前提下,不同源之间不能进行资源访问,也就是说钓鱼网站无法拿到原始网站的cookie,模拟不了业务处理,这也是为什么我们要把csrf_token放到cookie中,确保网站业务处理时的安全

  • 相关阅读:
    组合模式
    迭代器模式
    命令模式
    装饰者模式
    观察者模式
    策略模式
    适配器模式和外观模式
    Servlet
    Java 递归
    Java 反射
  • 原文地址:https://www.cnblogs.com/williamweson/p/13031491.html
Copyright © 2020-2023  润新知