除了可以更改微软默认的cookie的名字外,还可以更改默认的加密方法。继承IAntiForgeryAdditionalDataProvider接口,实现里面的方法即可。
采用的加密方法有加盐和使用时间戳的方式。
以使用时间戳方式举例:
public class AntiForgeryExtension : IAntiForgeryAdditionalDataProvider { public string GetAdditionalData(HttpContextBase context) { return DateTime.UtcNow.Ticks.ToString(); } public bool ValidateAdditionalData(HttpContextBase context, string additionalData) { if (string.IsNullOrWhiteSpace(additionalData)) { return false; } var requestTime = Convert.ToInt64(additionalData); var now = DateTime.UtcNow.Ticks; var difference = new TimeSpan(now - requestTime); return (difference.TotalMinutes > -1 && difference.TotalMinutes < 10); } }
Golbal.asax需要注册:
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RouteConfig.RegisterRoutes(RouteTable.Routes); AntiForgeryConfig.CookieName = "CSRF_Cookie"; AntiForgeryConfig.AdditionalDataProvider = new AntiForgeryExtension(); }
提醒:
这种方法+权限验证机制才是比较安全的做法。
原文:http://www.cnblogs.com/sunice/p/6294839.html