X-CSRF-Token 是如何工作的?

信息安全 Web应用程序 饼干 csrf
2021-08-28 17:14:48

看完这个问题,如果我的理解是正确的,服务器将 CSRF 令牌作为 cookie 发送到下游。乍一看,这似乎违背了令牌的目的,因为所有 cookie 都是由浏览器发送的,即使请求的来源不同。

但是,为了将其编写为自定义字段,您需要先阅读它,只有当您是同源时才能这样做。因此,请求证明它来自对 cookie jar 具有“读取权限”的代码——这与代表您发送请求的浏览器不同。

但我不确定我是否理解正确。它是这样工作的吗?

2个回答

发送自定义标头(例如 X-CSRF-Token)和 cookie 的目的是,这种称为双重提交的技术如果实施得当,将缓解 CSRF。它的工作方式是,虽然 cookie 会像 CSRF 一样通过强制请求自动发送,但自定义标头不会,阻止攻击者强迫您(受害者)不受攻击,因为服务器会同时查找两者价值观。双重提交用于应用程序不想跟踪反 CSRF 令牌状态的情况。

对,那是正确的。

同源策略阻止其他域读取实际的 cookie 值。

在 CSRF 攻击中,浏览器会自动发送 cookie。即使攻击者无法读取这些 cookie,她仍然可以通过发送跨站点请求来使用它们。

如果您要求所有具有副作用的请求都具有在 cookie 机制之外发送的经过验证的值,那么这会减轻 CSRF,因为攻击者无法知道它。