CSRF:我是否需要为无 cookie 站点使用 CSRF 令牌?

CSRF: Do I need to use CSRF token for no cookies site?

我真正想知道的是,我是否需要将 CSRF 令牌添加到不使用 cookie 的网站上的表单中?我不在我的网站上使用 cookie,我使用会话。当然,对于我所有的表格,我都使用 post 方法。如果我需要使用它们,你能解释一下为什么吗,因为我读到 CSRF 攻击是通过存储在网络浏览器中的 cookie 发生的。所以,我的逻辑是没有 cookie,没有 CSRF 攻击。我说得对吗?

非常感谢。

So, my logic is no cookies, no CSRF attacks. Am I correct?

不,你错了。

如果您的 Web 客户端更改了服务器的状态(包括更改服务器使用的数据库中的数据),则可能会发生 CSRF 攻击,您需要 CSRF 保护。如果您的 Web 客户端没有 change/mutate 服务器的状态(例如,仅读取、列出数据),则不需要 CSRF。

以上内容适用于任何会话和 cookie。

例如,您的网络服务器仅列出您最喜欢的城市过去 10 年的平均每日气温。每个人都可以看到此数据,因此服务器不会对用户进行身份验证并且没有会话。没有饼干。但是,您不希望一些“脚本小子”编写脚本并每天无休止地调用您的 API 端点进行数百万次调用。因此,您实施了速率限制。您还阻止了一段时间,比如 1 小时或 1 天,客户端 IP 地址是 API 超出限制的请求的来源。 (这种阻塞只是作为示例提到的,它是否是一个好主意超出了我们的主题范围)

在这种情况下,您仍然需要 CSRF 保护,因为攻击者可以发起 CSRF 攻击,导致受害者无法使用您的服务器。