zoukankan      html  css  js  c++  java
  • 防XSS攻击过滤器

    /// <summary>
        /// 防XSS攻击
        /// date:2020-07-28
        /// </summary>
        public class XssFilter : ActionFilterAttribute
        {
            private const string strRegex = @"<[^>]+?style=[w]+?:expression(|(alert|confirm|prompt)|^+/v(8|9)|<[^>]*?=[^>]*?&#[^>]*?>|(and|or).{1,6}?(=|>|<|in|like)|/*.+?*/|<s*script|<s*img|EXEC|UNION.+?SELECT|UPDATE.+?SET|INSERTs+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)s+(TABLE|DATABASE)";
            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                var request = filterContext.RequestContext.HttpContext.Request;
                if (request.HttpMethod == "GET")
                {
                    for (int i = 0; i < request.QueryString.Count; i++)
                    {
                        var result = CheckData(request.QueryString[i].ToString());
                        if (result)
                        {
                            filterContext.Result = new JsonResult() { Data = new { ret = -1, msg = "提交的数据含有非法字符" }, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
                            break;
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < request.Form.Count; i++)
                    {
                        var result = CheckData(request.Form[i].ToString());
                        if (result)
                        {
                            filterContext.Result = new JsonResult() { Data = new { ret = -5, msg = "提交的数据含有非法字符" } };
                            break;
                        }
                    }
                }
            }
    
            private static bool CheckData(string inputData)
            {
                if (Regex.IsMatch(inputData, strRegex))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }
  • 相关阅读:
    微信小程序开发学习--页面事件和数据绑定
    检测小程序版本更新提示
    vue-cli脚手架
    链表中倒数第K个结点
    调整数组顺序使奇数位于偶数前面
    数值的整数次方(十二)
    二进制中1的个数(十一)
    覆盖矩形(十)
    变态跳台阶(九)
    跳台阶(八)
  • 原文地址:https://www.cnblogs.com/nayilvyangguang/p/13391443.html
Copyright © 2011-2022 走看看