c# - MVC 5 - 缓解 BREACH 漏洞

标签 c# asp.net-mvc security csrf

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

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

  • 从使用 HTTP 级压缩的服务器提供服务
  • 在 HTTP 响应主体中反射(reflect)用户输入
  • 在 HTTP 响应主体中反射(reflect)一个 secret (例如 CSRF token )

似乎缓解措施的有效性顺序是:

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

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

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


所以,毕竟,我现在唯一真正能看的就是将 secret 与用户输入分开。我考虑过可能会尝试将 CSRF token 值放入 session 中......或者我是否完全过度思考了这一点,并且“@Html.AntiForgeryToken”的当前实现是否足以保护我们?

最佳答案

Anti-Forgery/CSRF Token 还不够吗?在 MVC 中,您可以使用 Html.AntiForgeryToken()。我之前在我的 MVC 应用程序中使用过它,它确实减轻了违规行为。

关于c# - MVC 5 - 缓解 BREACH 漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30331105/

相关文章:

c# - 如何从用户控件访问页面控件?

c# - 使用 AutoMapper 将通用枚举映射到小写字符串

c# - TraceListener,在断言失败时抛出异常

asp.net - MVC3远程模型验证操作中的参数名称

java - 如何更改 hdiv 中的缓存删除策略

javascript - Outlook插件开发

asp.net - 允许匿名访问 Controller 操作

JavaScript 故障

java - Java 控制台中的 Applet 错误

c# - 将 SecureString 放入 PasswordBox