Authentication 对Django REST身份验证、JWT和HTTP cookie感到困惑
因此,在研究了身份验证/安全性的最佳实践之后,似乎将后端创建的JWT存储在localStorage中是不安全的,因此,应该使用HTTP cookie,某种程度上。问题是simpleJWT包不做cookies。未找到任何其他可以处理此任务的最新包。那我该怎么办?抛弃JWT,使用DRF内置的会话身份验证?Authentication 对Django REST身份验证、JWT和HTTP cookie感到困惑,authentication,django-rest-framework,Authentication,Django Rest Framework,因此,在研究了身份验证/安全性的最佳实践之后,似乎将后端创建的JWT存储在localStorage中是不安全的,因此,应该使用HTTP cookie,某种程度上。问题是simpleJWT包不做cookies。未找到任何其他可以处理此任务的最新包。那我该怎么办?抛弃JWT,使用DRF内置的会话身份验证? 有一种误解认为httpOnlycookies可以防止XSS攻击。这不是真的。如果XSS攻击成功,黑客可以使用httpOnlycookies执行恶意请求 在localStorage和XSS攻击的情况
- 有一种误解认为
cookies可以防止XSS攻击。这不是真的。如果XSS攻击成功,黑客可以使用httpOnly
cookies执行恶意请求httpOnly
- 在
和XSS攻击的情况下,黑客可以直接读取身份验证令牌,并将其用于恶意请求localStorage
- 因此,可以对这两种类型执行恶意请求:
和cookieslocalStorage
httpOnly
- 更重要的是,如果使用带有
的cookie,则可以从其他来源进行恶意请求(跨站点请求伪造(CSRF))。这种攻击不适用于httpOnly
localStorage
localStorage
与cookies
的比较来自我的文章:
simplejwt repo中打开了添加CookiehttpOnly
的问题:
如果可以使用基于会话的DRF,那么应该使用它。这是一个经过战斗考验的解决方案。如果您想使用基于令牌的身份验证,可以将令牌存储在localStorage
中,它将尽可能安全