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

时间:2014-06-17 07:00:25

标签: security csrf csrf-protection

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

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

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

2 个答案:

答案 0 :(得分:3)

CSRF旨在让不可靠的用户将数据发布到攻击者认为用户已登录的服务器上。

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

我认为将有效负载令牌放在标题中会很好,只要它不是" Cookie"或者记住的任何其他标题"并由浏览器自动发送。

答案 1 :(得分:1)

如果您在标头中发送CSRF令牌,则不会有任何安全风险。只要确保每次客户端请求页面时此标题的值都会更改,即它应该是一个随机数。此外,客户端上的Web应用程序应将此标头发送回服务器,以便服务器可以将发送到客户端的标头值与从客户端响应中收到的相同标头的值相匹配。