【发布时间】:2021-03-04 21:11:53
【问题描述】:
因此,在研究了身份验证/安全性的最佳实践之后,似乎将后端创建的 JWT 存储在 localStorage 中并不安全,因此应该使用 HTTP Cookie。问题是,simpleJWT 包不做 cookie。没有找到任何其他可以处理此任务的最新包。所以我该怎么做?抛弃 JWT 并使用 DRF 的内置会话身份验证?
【问题讨论】:
标签: authentication django-rest-framework
因此,在研究了身份验证/安全性的最佳实践之后,似乎将后端创建的 JWT 存储在 localStorage 中并不安全,因此应该使用 HTTP Cookie。问题是,simpleJWT 包不做 cookie。没有找到任何其他可以处理此任务的最新包。所以我该怎么做?抛弃 JWT 并使用 DRF 的内置会话身份验证?
【问题讨论】:
标签: authentication django-rest-framework
httpOnly cookie 可以防止XSS 攻击。这不是真的。在XSS攻击成功的情况下,黑客可以使用httpOnlycookies来执行恶意请求。localStorage和XSS攻击的情况下,黑客可以直接读取授权令牌,并将其用于恶意请求。localStorage 和 cookie httpOnly。httpOnly 的cookie,则可以从其他来源(跨站点请求伪造(CSRF))进行恶意请求。这种攻击不适用于localStorage。localStorage 与 cookies 的对比来自我的文章:React Token-Based Authentication to Django REST API Backend。
添加 cookie httpOnly 的问题在 simplejwt 存储库中打开:link to issue。
如果你可以使用基于会话的 DRF,你应该使用它。这是一个久经考验的解决方案。如果您想使用基于令牌的身份验证,您可以将令牌存储在localStorage 中,它将尽可能安全。
【讨论】: