【问题标题】:Is it a security risk to allow CSRF token to be sent in body OR header?允许在正文或标头中发送 CSRF 令牌是否存在安全风险?
【发布时间】:2014-06-25 23:38:03
【问题描述】:

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

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

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

【问题讨论】:

  • Information Security 可能是这个问题的更好选择
  • 反对者是否愿意发表评论并帮助我改进?

标签: security csrf csrf-protection


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-23
      • 2018-08-01
      • 2012-06-13
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多