【问题标题】:MVC.net form post/anti forgeryMVC.net 表单发布/防伪
【发布时间】:2010-08-13 00:59:22
【问题描述】:

定义ValidateAntiForgeryToken 属性时。盐的复杂程度应该是多少?

例如,超过 X 个字符的字母数字字符好吗?应该也有符号吧。

[ValidateAntiForgeryToken(Salt = "How complex is good")]
public virtual ActionResult SaveDetail(UserDetails details)
{
.
.
.
}

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    我认为这是盐长度而不是字符类型的问题。简单地说,盐越长,AntiForgeryToken 就越难破解。现代方法如 md5-crypt 和 bcrypt 分别使用 48 位和 128 位的盐。也许你想跟随他们的领导。

    如果您真的很担心,请为每个视图添加不同的盐。这将为您的站点提供更高的安全性,因为黑客将无法在各个视图之间重复使用受损令牌。希望这是有道理的。

    Sanderson 在this post 中对此进行了讨论。

    【讨论】:

      【解决方案2】:

      我已将我的“盐”添加到配置文件中并使用 guid 作为它的值(沿线):

      public const string AntiforgeryToken = "{F161FDA9-D1F0-43D2-85D0-F7051F12E7B8}"; 
      

      我在控制器中这样引用它:

      [AcceptVerbs(HttpVerbs.Post), ValidateAntiForgeryToken(Salt = Config.AntiforgeryToken)] 
      

      对我来说似乎工作得很好。

      吉姆

      【讨论】:

        猜你喜欢
        • 2017-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-06
        • 2021-09-30
        • 1970-01-01
        • 2020-02-20
        • 1970-01-01
        相关资源
        最近更新 更多