首页 > 其他 > 详细

防范CSRF(三)

时间:2017-01-17 23:46:10      阅读:422      评论:0      收藏:0      [点我收藏+]

除了可以更改微软默认的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();
}

提醒:

  这种方法+权限验证机制才是比较安全的做法。

防范CSRF(三)

原文:http://www.cnblogs.com/sunice/p/6294839.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!