Django rest framework 对于Django DRF后端,一种身份验证方法是否更安全?

Django rest framework 对于Django DRF后端,一种身份验证方法是否更安全?,django-rest-framework,django-authentication,django-sessions,django-rest-framework-jwt,django-rest-framework-simplejwt,Django Rest Framework,Django Authentication,Django Sessions,Django Rest Framework Jwt,Django Rest Framework Simplejwt,我想使用最安全的方法将登录用户会话存储在cookie中。 后端是在Django&DRF上构建的,所以我选择使用simplejwt插件进行令牌身份验证或djangos默认会话身份验证。 前端不是SPA,但最终也会有一个移动应用程序。因此,我一直倾向于令牌身份验证,将它们存储在仅限httpOnly的cookies中,使用寿命很短。但在这一点上,我想知道我是否本质上只是以一种迂回的方式处理会话身份验证 对于这个应用程序,一种方法比另一种(在安全性方面)好吗?我认为没有最安全的身份验证方法。每种方法都有

我想使用最安全的方法将登录用户会话存储在cookie中。 后端是在Django&DRF上构建的,所以我选择使用simplejwt插件进行令牌身份验证或djangos默认会话身份验证。 前端不是SPA,但最终也会有一个移动应用程序。因此,我一直倾向于令牌身份验证,将它们存储在仅限httpOnly的cookies中,使用寿命很短。但在这一点上,我想知道我是否本质上只是以一种迂回的方式处理会话身份验证


对于这个应用程序,一种方法比另一种(在安全性方面)好吗?

我认为没有最安全的身份验证方法。每种方法都有优点和缺点。要拥有一个安全的应用程序,不仅需要良好的身份验证,还需要其他安全方面的最佳实践

互联网上有一个神话,在XSS的情况下,httpOnly cookie可以拯救你,这是不真实的。对于XSS,可以直接读取存储在localStorage中的值。Cookie(httpOnly或not)中的值可用于XSS情况下的恶意请求(它们不会像在localStorage中那样被直接访问,但可用于“坏”请求,例如更改密码)。为了对XSS安全,只需在cookie或localSotrage中不存储任何身份验证数据。每次刷新网站时强制用户登录-这是最安全的

在我看来,auth中没有银弹,如果您计划添加一个移动应用程序,那么一个好的解决方案可能是使用令牌身份验证(可以是JWT或DRF-token或django-rest-knox)


我使用的是DRF token+,它具有管理auth所需的所有URL(而且非常简单)。Djoser的一个不错的特性是,它在注销时删除令牌,并在登录时创建一个新令牌。当有人偷走你的代币时,只要注销,它就无效了。我将令牌存储在本地存储中。我使用的是React,它有一些XSS防御机制。此外,我正在使用内容安全策略和HTTPS(使用Let's encrypt)。我只使用受信任的包。我希望这能给应用程序带来安全性。它100%安全吗?可能不是。。。是否有任何100%安全的连接到互联网?可能不会。我的建议是尽最大努力确保安全。

您希望这两种方法都能同样安全地实现。最大的区别在于JWT允许您的服务器“更无状态”,而默认会话身份验证需要数据库查找。这会影响服务器的扩展方式…