MVC 5 - 减轻BREACH漏洞

Jak*_*ond 15 c# security asp.net-mvc csrf

我希望有人能够帮助我理解这个问题,以及我是否需要采取任何额外步骤来保护我的申请.

阅读此特定漏洞,它似乎会影响符合以下条件的服务器:

  • 从使用HTTP级压缩的服务器提供服务
  • 反映HTTP响应主体中的用户输入
  • 在HTTP响应主体中反映秘密(例如CSRF令牌)

似乎缓解措施的顺序是:

  • 禁用HTTP压缩
  • 将秘密与用户输入分开
  • 随机分配每个请求的秘密
  • 掩盖秘密(通过XORing随机分配每个请求的随机秘密)
  • 使用CSRF保护易受攻击的页面
  • 长度隐藏(通过向响应添加随机字节数)
  • 限制请求的速率

在我的页面视图中,我正在调用帮助器方法@Html.AntiForgeryToken,该方法在我访问表单时创建相应的输入和cookie.通过查看此帮助程序方法的作用,每次加载页面时似乎都会创建一个新的唯一标记,这似乎在缓解步骤中遇到第3点,并且首先使用CSRF令牌的行为符合第5点.

禁用HTTP压缩似乎被广泛认为"对性能不利",而且从我一直在阅读的其他资源中看,长度隐藏可能会导致文件上传等功能出现问题(本页面使用)


所以,毕竟,我现在唯一可以看到的是将秘密与用户输入分开.我想过可能会尝试将CS​​RF令牌值放入会话中.....或者我完全过度思考这个问题,并且'@ Html.AntiForgeryToken`的当前实现是否足以保护我们?

jbt*_*ule 0

是的,如果 CSRF 令牌是随机的,那么它可以减轻攻击。只要您不通过用户输入表单发送任何其他机密,就应该没问题。

或者,

也可以对有用户输入的页面禁用压缩。查看这个答案Can gzip Compression be有选择地在 ASP.NET/IIS 7 中禁用吗?