REST API 中的 CSRF 令牌

Posted

技术标签:

【中文标题】REST API 中的 CSRF 令牌【英文标题】:CSRF token in rest api 【发布时间】:2021-05-04 18:16:53 【问题描述】:

在 rest API 中使用 CSRF 令牌是否有用?据我所知,我们没有会话,因此我们应该将令牌发送给客户端以进行下一次请求或提交表单。

在 ajax(xhr) 调用中再次使用它是否有帮助。有没有其他选择?

为此,我一直在阅读 spring 文档,其中也有一些示例。但我很好奇它真的有用吗?

顺便说一下,我的服务器是 spring 2.2,我的客户端是 Angular 9。

谢谢

【问题讨论】:

【参考方案1】:

CSRF 令牌对于防止 XSS 攻击至关重要,例如,您在一个选项卡中登录到您的银行,并访问我的恶意网站,该网站将向您的银行发送一个隐藏表单以窃取您的信用卡号。

如果您想建立一个更安全的网站,每个在后端操纵状态的请求(POST、PUT、DELETE 等)都应该包含一个 CSRF 令牌,以确保请求来自您网站上的表单并且仅您的网站。

您可以在 Owasps webpage 上阅读有关 CSRF 令牌的更多信息。

【讨论】:

问题是,如果我在不使用会话的情况下将令牌发送给用户,那么最终用户将能够获得 csrf 令牌以及其他令牌。我的问题是阻止他们提交表单是否是正确的机制????

以上是关于REST API 中的 CSRF 令牌的主要内容,如果未能解决你的问题,请参考以下文章

SPA 使用的经过身份验证的 Rest API:如何获取用于登录和注册表单的 CSRF 令牌?

如何以及在何处生成 CSRF 令牌以通​​过 REST API 向 Django 应用程序发出请求?

你如何在 django rest 框架中实现 CSRF 令牌?

Django Rest Framework 将不接受我的 CSRF 令牌

如何将 CSRF 令牌从 AngularJS 前端发送到 Spring REST 服务后端?

反应前端中的 CSRF 令牌不匹配