public 联系表格是否需要 CSRF 令牌?

Does public contact form require a CSRF token?

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

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

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

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

你是正确的 CSRF 仅当用户已通过身份验证并发送资源更改 请求。

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

As every one can send The Form

我能想到的唯一场景你可能需要 Public 表单 CSRF 保护 是当你添加一些 半认证 比如检测 DDOS。例如:

您使用一种机制来验证每个 ip 地址,每天只能发送一个请求,而无需要求他们提供验证码。

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

Attacker might using CSRF Attack for Passing Your DDos Protection

he/she 可能会向网络发送恶意软件,每个节点都可以发送 Form 并取消基于 IP 的应用程序级 DDOS 预防(半授权)