MVC 5 - 减轻BREACH漏洞

时间:2015-05-19 16:23:56

标签: c# asp.net-mvc security csrf

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

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

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

似乎缓解措施的顺序是:

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

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

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

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

2 个答案:

答案 0 :(得分:1)

防伪/ CSRF令牌不够用吗?在MVC中,您可以使用Html.AntiForgeryToken()。我以前在我的MVC应用程序中使用它,它确实减轻了漏洞。

答案 1 :(得分:0)

是的,如果CSRF令牌是随机的,那么它可以缓解攻击。只要您没有发送任何其他用户输入表格的秘密,您应该没事。

<强>可替换地,

对具有用户输入的页面禁用压缩也是可能的。查看此答案Can gzip compression be selectively disabled in ASP.NET/IIS 7?