美文网首页
Asp.net MVC 简单实现防 xss攻击,sql注入攻击

Asp.net MVC 简单实现防 xss攻击,sql注入攻击

作者: GoJarvis | 来源:发表于2019-03-23 23:34 被阅读0次

    Asp.net MVC 简单实现防 xss攻击,sql注入攻击

    新建过滤帮助类

    using System;
    using System.Web;
    using System.Text;
    using System.Text.RegularExpressions;
    public class safe_360
    {
        private const string StrRegex = @"<[^>]+?style=[\w]+?:expression\(|\b(alert|confirm|prompt)\b|^\+/v(8|9)|<[^>]*?=[^>]*?&#[^>]*?>|\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|/\*.+?\*/|<\s*script\b|<\s*img\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)";
        public static bool PostData()
        {
            bool result = false;
            for (int i = 0; i < HttpContext.Current.Request.Form.Count; i++)
            {
                result = CheckData(HttpContext.Current.Request.Form[i].ToString());
                if (result)
                {
                    break;
                }
            }
            return result;
        }
      
        public static bool GetData()
        {
            bool result = false;
            for (int i = 0; i < HttpContext.Current.Request.QueryString.Count; i++)
            {
                result = CheckData(HttpContext.Current.Request.QueryString[i].ToString());
                if (result)
                {
                    break;
                }
            }
            return result;
        }
        public static bool CookieData()
        {
            bool result = false;
            for (int i = 0; i < HttpContext.Current.Request.Cookies.Count; i++)
            {
                result = CheckData(HttpContext.Current.Request.Cookies[i].Value.ToLower());
                if (result)
                {
                    break;
                }
            }
            return result;
         
        }
        public static bool referer()
        {
            bool result = false;
            return result = CheckData(HttpContext.Current.Request.UrlReferrer.ToString());
        }
        public static bool CheckData(string inputData)
        {
            if (Regex.IsMatch(inputData, StrRegex))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
    

    在Global.asax文件中添加Application_BeginRequest事件

        void Application_BeginRequest(object sender, EventArgs e)
        {
                if (Request.Cookies != null)
                {
                    if (safe_360.CookieData())
                    {
                        Response.Write("您提交的Cookie数据有恶意字符!");
                        Response.End();
                     
                    }
                
                }
                if (Request.UrlReferrer != null)
                {
                    if (safe_360.referer())
                    {
                        Response.Write("您提交的Referrer数据有恶意字符!");
                        Response.End();
                    }
                }
                if (Request.RequestType.ToUpper() == "POST")
                {
                    if (safe_360.PostData())
                    {
                        Response.Write("您提交的Post数据有恶意字符!");
                        Response.End();
                    }
                }
                if (Request.RequestType.ToUpper() == "GET")
                {
                    if (safe_360.GetData())
                    {
                        Response.Write("您提交的Get数据有恶意字符!");
                        Response.End();
                    }
                }         
        }
    

    相关文章

      网友评论

          本文标题:Asp.net MVC 简单实现防 xss攻击,sql注入攻击

          本文链接:https://www.haomeiwen.com/subject/chaeeqtx.html