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中验证防伪标记 
    }
    }

  • 相关阅读:
    Java学习8.31
    Java学习8.30
    Java学习8.29
    Java学习8.28
    Java学习8.27
    Java学习8.26
    242. Valid Anagram 有效的字符串
    680. Valid Palindrome II 对称字符串-可删一个字母版本
    151. Reverse Words in a String翻转一句话中的单词
    155. Min Stack 155.最小栈
  • 原文地址:https://www.cnblogs.com/yechangzhong-826217795/p/11776491.html
Copyright © 2011-2022 走看看