CSRF攻击

  • CSRF攻击能够成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证信息都是存在于cookie中,因此黑客可以在不知道这些验证信息的情况下直接利用用户自己的cookie来通过安全验证。
  • 关键是验证授权用户和发起请求者是否是同一个人。
  • 要抵御 CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中
    • 由于Cookie中的信息是自动带上的,攻击者就是利用了这一点,因此只需要请求中(比如header中)还有其他需要验证的信息即可,只要不要攻击者纯粹利用自动带上的cookie就能通过验证就行。
  • CSRF 令牌
    • 可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有token或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。这种方法要比检查 Referer 要安全一些,token 可以在用户登陆后产生并放于session之中,然后在每次请求时把token 从 session 中拿出,与请求中的 token 进行比对
  • X-CSRF-Token
    • 除了将 CSRF 令牌作为 POST 参数进行验证外,还可以通过设置X-CSRF-Token请求头来实现验证,VerifyCsrfToken 中间件会检查 X-CSRF-TOKEN 请求头,首先创建一个 meta 标签并将令牌保存到该 meta 标签:
  • X-XSRF-Token
    • Laravel 还会将 CSRF 令牌保存到名为 XSRF-TOKEN 的 Cookie 中,你可以使用该 Cookie 值来设置 X-XSRF-TOKEN请求头。一些 JavaScript 框架,比如 Angular,会为你自动进行设置,基本上你不太需要手动设置这个值。

posted on 2019-11-26 16:27  碎羽love星谊  阅读(142)  评论(0编辑  收藏  举报

导航