首页 > 解决方案 > 公共联系表是否需要 CSRF 令牌?

问题描述

假设我们的网站上有一个公开的简单联系表。FE 应用程序向 BE 服务发出请求,并在那里以某种方式进行处理。它不需要任何身份验证,因此每个人都可以提交请求,仅此而已。

当我在这里查看 OWASP 文档时,上面的示例似乎不属于这种情况。联系请求中没有经过身份验证的用户上下文,因此我看不到 CSRF 令牌可以阻止的任何攻击场景。

任何人都可以确认这种方法或提出 CSRF 有意义的此类攻击的场景。

也许值得补充的是,我们不保留任何用户会话。我们有一个由 Nginx 提供的 SPA(在 Angular 中),并且我们仅使用无状态承载令牌进行身份验证(基于 SSO)与 BE 服务。所以上面似乎是使用 CSRF 令牌的另一个障碍,因为我们没有在任何地方存储任何会话对象来验证 BE 中的 CSRF 令牌。使用 cookie 将令牌传输到浏览器似乎在这里也无效,因为 Nginx 正在为应用程序提供服务,因此我们无法进行 cookie 附带的任何令牌验证。

标签: securitycsrfcsrf-token

解决方案


你是对的CSRF 只有在用户通过身份验证并发送资源更改请求时才进行交易。

由于不涉及身份验证,攻击者不能滥用用户权限来做某事

因为每个人都可以发送表格

我能想到的唯一一种情况,您可能需要针对公共形式的CSRF 保护是当您添加一些半身份验证(例如检测 DDOS)时。例如:

您使用一种机制来验证每个 IP 地址每天只能发送一个请求,而无需向他们询问验证码。

因为您正在对它们进行半身份验证(一个用户不等于其他用户)。

攻击者可能会使用 CSRF 攻击来通过您的 DDos 保护

他/她可能会向网络发送恶意软件,每个节点都可以发送表单并取消基于 IP 的应用程序级 DDOS 防护(半身份验证)


推荐阅读