Asp.Net 排出过滤特殊字符串

 

 

safe_360.cs

复制代码
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Web;

/// <summary>
/// safe_360 的摘要说明
/// </summary>
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;
        try
        {
            for (int i = 0; i < HttpContext.Current.Request.QueryString.Count; i++)
            {
                string curQ = HttpContext.Current.Request.QueryString[i].ToString();
                result = CheckData(curQ);
                if (result) break;

            }
        }
        catch (HttpRequestValidationException hrve)
        {
            result = true;
        }
        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)
    {
        bool result = false;

        //为true 表示有恶意代码
        if (Regex.IsMatch(inputData, StrRegex))
        {
            result= true;
        }
        else
        {
            if (inputData.IndexOf("'==") > -1)
            {
                result = true;
            }
            else
            {
                result = (inputData.Contains("|") || inputData.Contains("&") || inputData.Contains(";")
                    || inputData.Contains("$") || inputData.Contains("$") || inputData.Contains("'")
                    || inputData.Contains("\"") || inputData.Contains("\\'") || inputData.Contains("\\\"")
                    || inputData.Contains("<") || inputData.Contains(">") || inputData.Contains("(")
                    || inputData.Contains(")") || inputData.Contains("+") || inputData.Contains("\r")
                    || inputData.Contains("\n") || inputData.Contains(",") || inputData.Contains("\\"));
            }
        }
        return result;
    }
}
复制代码

 

Global.asax

复制代码
 protected void Application_BeginRequest(object sender, EventArgs e)
        {
            if (Request.Cookies != null)
            {
                if (safe_360.CookieData())
                {
                    Response.ContentType = "text/ plain;charset=utf-8";
                    Response.Write("您提交的Cookie数据有恶意字符!");
                    Response.End();

                }

            }
            if (Request.UrlReferrer != null)
            {
                if (safe_360.referer())
                {
                    Response.ContentType = "text/ plain;charset=utf-8";
                    Response.Write("您提交的Referrer数据有恶意字符!");
                    Response.End();
                }
            }
            if (Request.RequestType.ToUpper() == "POST")
            {
                if (safe_360.PostData())
                {
                    Response.ContentType = "text/ plain;charset=utf-8";
                    Response.Write("您提交的Post数据有恶意字符!");
                    Response.End();
                }
            }
            if (Request.RequestType.ToUpper() == "GET")
            {
                if (safe_360.GetData())
                {
                    Response.ContentType= "text/ plain;charset=utf-8";
                    Response.Write("您提交的Get数据有恶意字符!");
                    Response.End();
                }
            }
        }
复制代码

 

posted @   三瑞  阅读(158)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2016-12-07 寻找 IBatisNet 批量插入(批量复制) 的心路历程
点击右上角即可分享
微信分享提示