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

    提醒:

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

  • 相关阅读:
    SVN服务的配置与管理
    SVN配置多仓库与权限控制
    SVN使用详解
    这个问题他又来了,如何学编程!
    乘风破浪的程序员们
    Java 学习路线(史上最全 2020 版 ~ 持续更新中)
    P4782 【模板】2-SAT 问题
    HDU
    2020.8.3
    Interesting Computer Game
  • 原文地址:https://www.cnblogs.com/sunice/p/6294839.html
Copyright © 2011-2022 走看看