zoukankan      html  css  js  c++  java
  • 记录一下自己在MVC项目中如何防CSRF攻击,直接上代码

    1.前端的处理:

    2.后台 

     1.)添加过滤器,哪里用放哪里

    2.)需要验证的方法上直接添加过滤器即可

    大功告成

    以下为过滤器代码块

    /// <summary>
    /// ajax中加上AntiForgeryToken防止CSRF攻击
    /// </summary>
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
    public class MyValidateAntiForgeryToken : AuthorizeAttribute
    {
    private readonly bool _ignore;
    /// <summary>
    /// 防伪安全属性
    /// </summary>
    /// <param name="ignore">是否忽略安全验证</param>
    public MyValidateAntiForgeryToken(bool ignore = false)
    {
    this._ignore = ignore;
    }

    public override void OnAuthorization(AuthorizationContext filterContext)
    {
    if (filterContext == null)
    throw new ArgumentNullException("filterContext");

    if (_ignore)
    return;

    if (filterContext.IsChildAction)
    return;

    ///只处理POST请求
    if (!String.Equals(filterContext.HttpContext.Request.HttpMethod, "POST", StringComparison.OrdinalIgnoreCase))
    return;

    var request = filterContext.HttpContext.Request;
    var antiForgeryCookie = request.Cookies[AntiForgeryConfig.CookieName];
    var cookieValue = antiForgeryCookie != null ? antiForgeryCookie.Value : null;
    AntiForgery.Validate(cookieValue, request.Form["__RequestVerificationToken"]); //从cookies 和 Form中验证防伪标记
    }
    }

  • 相关阅读:
    在Springboot 中使用 flyway
    Ryu 学习资料总结
    OpenDaylight 学习资料整理
    在 Ubuntu16.04 上安装 etcd
    ovs 连接 Floodlight 控制器
    etcd 学习资料整理
    Floodlight 学习资料整理
    算法用例
    数据库
    他山之石
  • 原文地址:https://www.cnblogs.com/jfeng/p/7685372.html
Copyright © 2011-2022 走看看