CSRF:对于没有 cookie 的站点,我是否需要使用 CSRF 令牌?

问题描述

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

提前致谢。

解决方法

所以,我的逻辑是没有 cookie,没有 CSRF 攻击。我说的对吗?

不,你不正确。

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

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

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

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