【问题标题】:Confused about Django REST authentication, JWT and HTTP cookies对 Django REST 身份验证、JWT 和 HTTP cookie 感到困惑
【发布时间】:2021-03-04 21:11:53
【问题描述】:

因此,在研究了身份验证/安全性的最佳实践之后,似乎将后端创建的 JWT 存储在 localStorage 中并不安全,因此应该使用 HTTP Cookie。问题是,simpleJWT 包不做 cookie。没有找到任何其他可以处理此任务的最新包。所以我该怎么做?抛弃 JWT 并使用 DRF 的内置会话身份验证?

【问题讨论】:

    标签: authentication django-rest-framework


    【解决方案1】:
    • 存在一种误解,认为httpOnly cookie 可以防止XSS 攻击。这不是真的。在XSS攻击成功的情况下,黑客可以使用httpOnlycookies来执行恶意请求。
    • localStorage和XSS攻击的情况下,黑客可以直接读取授权令牌,并将其用于恶意请求。
    • 因此可以对以下两种类型执行恶意请求:localStorage 和 cookie httpOnly
    • 此外,如果使用带有httpOnly 的cookie,则可以从其他来源(跨站点请求伪造(CSRF))进行恶意请求。这种攻击不适用于localStorage

    localStoragecookies 的对比来自我的文章:React Token-Based Authentication to Django REST API Backend

    添加 cookie httpOnly 的问题在 simplejwt 存储库中打开:link to issue

    如果你可以使用基于会话的 DRF,你应该使用它。这是一个久经考验的解决方案。如果您想使用基于令牌的身份验证,您可以将令牌存储在localStorage 中,它将尽可能安全。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 2019-01-01
      • 2011-11-08
      • 1970-01-01
      • 2019-03-01
      相关资源
      最近更新 更多