gpt4 book ai didi

rest - 使用 JWT 对 Symfony 3 API REST 和 Angular webapp 使用 CSRF token 保护有用吗?

转载 作者:太空狗 更新时间:2023-10-29 18:25:48 26 4
gpt4 key购买 nike

我们正在构建一个基于 Symfony 3 REST API(使用 FosRestBundle)的 Angular 2 网络应用程序。我们正在使用有状态 JWT 在后端和前端之间对用户进行身份验证。

我们目前正在考虑 CSRF,我们想知道除了 JWT 之外还使用 CSRF token 是否正确。我们在 FosRestBundle documentation 中读到:

When building a single application that should handle forms both via HTML forms as well as via a REST API, one runs into a problem with CSRF token validation. In most cases it is necessary to enable them for HTML forms, but it makes no sense to use them for a REST API. For this reason there is a form extension to disable CSRF validation for users with a specific role. This of course requires that REST API users authenticate themselves and get a special role assigned.

我们也阅读了一些其他 StackOverflow 问题(例如,参见 herehere)。

我的问题很简单:为什么不建议将 CSRF token 与 REST API 一起使用?我们不了解 JWT 如何防止 CSRF 攻击。

谢谢:-)

最佳答案

首先,“有状态 JWT”是一个矛盾修辞法。引用the introduction to JWT :

Whenever the user wants to access a protected route or resource, the user agent should send the JWT, typically in the Authorization header using the Bearer schema. The content of the header should look like the following:

Authorization: Bearer <token>

This is a stateless authentication mechanism as the user state is never saved in server memory. The server's protected routes will check for a valid JWT in the Authorization header, and if it's present, the user will be allowed to access protected resources.

如果正确完成,使用 JWT 的身份验证会使 CSRF token 过时。这是因为 CSRF 攻击依赖于浏览器存储您的 cookie,并在每次请求时将它们发送到服务器。但是,当单击触发 POST 请求的伪造表单中的按钮时,此请求将永远不会包含 Authorization。 header ,因此服务器会将其视为未授权。

关于rest - 使用 JWT 对 Symfony 3 API REST 和 Angular webapp 使用 CSRF token 保护有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42246133/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com