zoukankan      html  css  js  c++  java
  • 防范CSRF(三)

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

    提醒:

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

  • 相关阅读:
    大话设计模式——UML图
    IdentityServer3零星笔记
    Angular路由
    基于jquery的静态页面翻页
    00_python安装与配置(mac)
    OracleParameter.UdtTypeName的值必须是全大写!
    VS2012调用64位IIS Express
    MVC中使用Ueditor
    优秀博客站点
    jqGrid中的formatter
  • 原文地址:https://www.cnblogs.com/sunice/p/6294839.html
Copyright © 2011-2022 走看看