我是 mvc 的新手。所以我浏览了几篇关于 AntiForgeryToken 使用的文章。AntiForgeryToken 在页面中发出一个加密值,当表单发布时,AntiForgeryToken 的加密值和 cookie 进入服务器端并比较两个值以检查两者是否相同。如果不是,则会引发错误。
我对 AntiForgeryToken 没有什么疑问
1)在服务器端如何进行比较。我需要编写任何代码来比较值还是在具有 [ValidateAntiForgeryToken()] 之类的属性的操作方法时自动完成?
[ValidateAntiForgeryToken()] public ActionResult Edit(ProductDetails productdetails) {
}
2)如果我喜欢在页面显示时加密用户ID,那么可以编写类似的代码@Html.AntiForgeryToken(m=> m.userid)
吗?如果有可能,那么当表单发布时,如何从服务器端获取用户 ID 值,因为用户 ID 将被加密。
3)人们使用什么盐概念?如何实施盐概念AntiForgeryToken()
?
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() 那么它总是会给出一个动态组合。那它。