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();
    }

    提醒:

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

  • 相关阅读:
    dup/dup2函数
    read/write函数
    lseek函数
    流程控制
    vim普通模式
    vim实用技巧1
    python源代码解读
    python变量命名规则
    python之字符串2
    Docker系列文章
  • 原文地址:https://www.cnblogs.com/sunice/p/6294839.html
Copyright © 2011-2022 走看看