繁体   English   中英

使用带有JWT的Symfony 3 API REST和Angular webapp的CSRF令牌保护是否有用?

[英]Is it useful to use CSRF token protection for Symfony 3 API REST and Angular webapp with JWT?

我们正在构建一个基于Symfony 3 REST API(带有FosRestBundle)的Angular 2 Web应用程序。 我们使用有状态JWT来验证后端和前端之间的用户。

我们现在正在考虑CSRF,我们想知道除了JWT之外是否使用CSRF令牌是正确的。 我们在FosRestBundle文档读到

在构建应该通过HTML表单以及REST API处理表单的单个应用程序时,会遇到CSRF令牌验证问题。 在大多数情况下,有必要为HTML表单启用它们,但将它们用于REST API是没有意义的。 出于这个原因,有一个表单扩展来禁用具有特定角色的用户的CSRF验证。 这当然要求REST API用户对自己进行身份验证并分配特殊角色。

我们也阅读了其他一些StackOverflow问题(参见此处此处 )。

我的问题很简单: 为什么不推荐使用带有REST API的CSRF令牌? 我们不了解JWT如何保护CSRF攻击。

谢谢 :-)

首先,“有状态的JWT”是矛盾的。 引用JWT的介绍

每当用户想要访问受保护的路由或资源时,用户代理应该使用承载模式发送JWT,通常在Authorization标头中。 标题的内容应如下所示:

Authorization: Bearer <token>

这是一种无状态身份验证机制,因为用户状态永远不会保存在服务器内存中 服务器的受保护路由将在Authorization标头中检查有效的JWT,如果存在,则允许用户访问受保护的资源。

使用JWT进行身份验证,如果操作正确,则会使CSRF令牌过时。 这是因为CSRF攻击依赖于存储cookie的浏览器,并将每个请求发送给服务器。 但是,当单击触发POST请求的伪造表单中的按钮时,此请求将永远不会包含Authorization标头,因此服务器将其视为未经授权。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM