允许在正文或标头中发送 CSRF 令牌是否存在安全风险?

str*_*ger 5 security csrf csrf-protection

大多数 CSRF 解决方案似乎坚持将 CSRF 令牌作为 POST 数据的一部分发送。

在我的情况下,发送的数据是 json,我不控制发送的内容(而且我不想开始弄乱 json)。因此,我正在考虑将 CSRF 令牌作为标头发送。但是,我的应用程序的遗留部分仍然需要能够在正文中发送令牌(例如从 html 表单提交)。

因此,如果有效的 CSRF 令牌出现在正文或标头中,我的 CSRF 保护必须允许该请求。与坚持将令牌放在体内相比,这是否存在安全风险?

vto*_*ola 3

CSRF 是指让不可疑的用户将数据发布到攻击者认为该用户已登录的服务器。

保护背后的想法是,服务器将令牌与您的会话相关联,并将其作为 cookie 和有效负载要求发送给您。然后,当发布内容时,您将令牌以 cookie 的形式发送到有效负载中。因此,攻击者无法猜测 cookie 或会话中的令牌是什么。如果服务器收到带有两个不同令牌的帖子,它将被拒绝。

我认为将有效负载令牌放在标头中就可以了,只要它不是“Cookie”或浏览器“记住”并自动发送的任何其他标头即可。