首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用HTTP只使用cookie来验证Django REST?

如何使用HTTP只使用cookie来验证Django REST?
EN

Stack Overflow用户
提问于 2020-11-07 08:21:10
回答 1查看 2.1K关注 0票数 0

我使用django rest框架并为我的项目响应js环境,为了存储jwt令牌本地存储,cookie是不安全的,所以我决定保存httponly cookie,如何实现身份验证?

如何在http标头中传递令牌

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-07 09:15:04

下面的文本来自我的文章使用Django REST后端进行基于令牌的身份验证,它是关于如何使用Django构建SaaS并从头开始反应的完整教程的一部分。

在互联网上有很多关于如何在网站中存储auth_token以确保安全的讨论:

这是我的看法。

  • 最安全的选择是不将任何安全数据存储在客户端。只要强迫用户每次刷新网站或在新标签中打开网站时都要登录即可。
  • 在XSS (跨站点脚本)攻击的情况下,可以读取来自localStorage的值。那是真的。如果在带有httpOnly设置的cookies中设置了令牌,那么就不能读取XSS。也是真的。这是否意味着使用httpOnly的cookies比localStorage更好?不能这么说。
  • 首先,React有一个针对XSS攻击的内置机制。只有当您使用dangerouslySetInnerHTML显式地请求它时,它才会呈现原始HTML。
  • 如果有XSS,那么坏的演员可以从localStorage中读到localStorage,但是他能用它做什么呢?他可以将其发送到服务器,也可以将其用于恶意请求。我们可以用内容安全策略(,CSP)保护应用程序避免从未知来源加载未知脚本(当然,我将在以后的文章中对此进行介绍)。
  • 好的,所以仍然有一个选项可以执行恶意请求。这可以用于两种类型的数据存储:localStoragecookies
  • 更重要的是,如果使用带有httpOnly的cookies,则可以从其他来源(跨站点请求伪造)执行恶意请求。这种攻击不适用于localStorage的情况。
  • 保护邮件请求的最简单的解决方案是注销(在我们的例子中)。在本教程中,令牌在注销时被销毁,因此不能再用于验证请求(我正在使用Djoser包)。
  • 总之,在XSS的例子中,没有援救(cookies不会有多大帮助)。Cookie允许另一种类型的附加攻击CSRF。

请记住,如果使用基于令牌的身份验证,则在DRF中禁用CSRF cookie。只有在基于会话的身份验证情况下才启用CSRF cookie。因此,如果您仍然希望使用httpOnly cookie,请记住使用cookies (否则CSRF攻击是可能的!)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64725781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档