Asp.net mvc 3 需要一些在MVC中使用AntiForgeryToken的指南吗

Asp.net mvc 3 需要一些在MVC中使用AntiForgeryToken的指南吗,asp.net-mvc-3,antiforgerytoken,Asp.net Mvc 3,Antiforgerytoken,我是mvc的新手。因此,我浏览了几篇关于AntiForgeryToken使用的文章。AntiForgeryToken在页面中发出一个加密值,当表单post然后AntiForgeryToken的加密值和cookie转到服务器端时,比较两个值以检查两者是否相同。如果不是,则抛出一个错误 我对防伪代币没什么问题 1) 比较是如何在服务器端进行的。我是否需要编写任何代码来比较值,或者在操作方法具有类似于[ValidateAntiForgeryToken()的属性时自动完成比较 [ValidateAnti

我是mvc的新手。因此,我浏览了几篇关于AntiForgeryToken使用的文章。AntiForgeryToken在页面中发出一个加密值,当表单post然后AntiForgeryToken的加密值和cookie转到服务器端时,比较两个值以检查两者是否相同。如果不是,则抛出一个错误

我对防伪代币没什么问题

1) 比较是如何在服务器端进行的。我是否需要编写任何代码来比较值,或者在操作方法具有类似于[ValidateAntiForgeryToken()的属性时自动完成比较

[ValidateAntiForgeryToken()] 公共操作结果编辑(ProductDetails ProductDetails) {

}

2) 如果我喜欢在页面显示时加密用户id,那么可以编写类似
@Html.AntiForgeryToken(m=>m.userid)
?若有可能,那个么表单何时发布,那个么如何从服务器端获取用户id值,因为用户id将被加密

3) 人们使用的盐概念是什么?如何使用
AntiForgeryToken()
实现salt概念

4) 我是否可以将多个
AntiForgeryToken()
放在一个表单中以加密多个敏感数据?如果不可能,请告诉我原因

5) 如何使
AntiForgeryToken()
针对密钥加密值…密钥将由我提供,每次都是动态的

请给出正确的答案。谢谢

更新 关于动盐

要生成随机字符串,请使用RNGCryptoServiceProvider

public string GenerateSalt(int length)
{
    var rng = new RNGCryptoServiceProvider();
    var buffer = new byte[length];
    rng.GetBytes(buffer);
    return Convert.ToBase64String(buffer);
}
如果我调用GenerateSalt(),它将始终提供一个动态组合。就是这样

  • 自动完成。这就是
    [validateAntiForgeryToken]
    属性(过滤器)的作用
  • 这不在代币的范围之内;它只是为了防止垃圾邮件和某些形式的黑客攻击,而不是加密数据。如果安全性是一个问题,请考虑创建自己的数据注释属性和DisplayTemplate/EditorTemplate(然后还有一个自定义过滤器来预处理传入值)
  • 盐就像任何形式的加密;它的存在使得欺骗传入值变得更加困难。通过使用salt,您为散列添加了另一个复杂级别,因此解密现在需要该值
  • 同样,它不是为了加密数据,只是为了保护表单的安全
  • 不知道你是什么意思,一种动态盐?您可能可以创建一个自定义实现(
    ValidateMyAntiForgeryToken:ValidateAntiForgeryToken

  • 我更新我的问题。另外,请告诉我是否有关于ValidateMyAntiForgeryToken自定义AntiForgeryToken的好文章?