防止CSRF漏洞,CSRF令牌的替代方法

use*_*020 5 php csrf

防止CSRF的常见方法是使用隐藏在表单中的令牌。出于好奇,这是实际上预防CSRF的唯一方法吗?人们争论不需要CSRF令牌使我发疯,我需要了解原因。我还能如何防止CSRF攻击?

小智 1

实际上,使用 CSRF 令牌只是另一层防御。根据OWASP Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet,验证请求来源也可用于 CSRF 保护。为了验证来源,我们可以使用,

  1. 来源标头
    • Origin header包含发起请求的方案、主机和端口信息。
  2. 参考标头
    • Referer标头包含前一个网页的地址,从该地址可以链接到当前请求的网页。

然而,使用这种方法存在一些限制,例如标头的不可用性和完整性。攻击者可以通过多种方式更改这些标头的值。因此,建议始终保持多层防御。