【问题标题】:Does ASP.NET MVC AntiCrsf token relies on machinekeyASP.NET MVC AntiCrsf 令牌是否依赖于 machinekey
【发布时间】:2015-04-28 16:08:11
【问题描述】:

我们正在使用 asp.net MVC 开箱即用的 AntiCSRF 来保证安全性。我们有很多使用 AJAX POST 和 JSON 的表单。

应用程序将使用 3 个负载平衡的 Web 服务器托管在 Azure 中。

有人可以在下面澄清一下吗:

  1. ASP.NET 如何生成 Csrf Token?

  2. 如果它使用机器密钥,我是否需要进行任何配置以确保请求在 Azure 非粘性负载平衡上有效?

谢谢。

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-4 azure


    【解决方案1】:

    作为cookie发送,在隐藏的HTML表单字段中,提交时两者必须相同。

    这个想法是 cookie 不能由外部攻击者设置。

    http://www.asp.net/web-api/overview/security/preventing-cross-site-request-forgery-(csrf)-attacks

    【讨论】:

    • 我明白了。我的问题是如何生成令牌,即使用机器密钥。如果是,是否所有 Web 服务器(负载平衡)都需要具有相同的密钥
    • 我不这么认为,是随机值
    【解决方案2】:

    根据 Antiforgery 类的源代码,我可以得出结论,它确实使用 MachineKey 来派生令牌:

    虽然 ASP.NET 场部署中的最佳实践也出于其他原因(使用表单身份验证、视图状态签名和其他安全相关项目时的身份验证 cookie)使用相同的机器密钥。无论防伪令牌如何,我都会选择在整个农场同步它们。这将是这样做的另一个原因:)。

    【讨论】:

      猜你喜欢
      • 2016-10-29
      • 2015-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 2015-09-22
      相关资源
      最近更新 更多