首页 > 编程语言 >Asp.Net 排出过滤特殊字符串

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

时间:2022-12-07 14:00:56浏览次数:35  
标签:safe Asp text Contains Response 字符串 Net inputData 360

 

 

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();
                }
            }
        }

 

标签:safe,Asp,text,Contains,Response,字符串,Net,inputData,360
From: https://www.cnblogs.com/xiaoruilin/p/16962871.html

相关文章

  • centos在VMware的net配置与静态ip
    centos在VMware的net配置与静态ip关键字:vmware;CentOS7最小安装;NAT网络模式,静态IP本机操作,1.查看本机ip并记录,假如为192.168.194.2312.修改虚拟机网络配置3.保......
  • 【JMETER压力测试报错:java.net.BindException: Address already in use: connect】
    一、现象描述在windows环境下,使用jmeter进行性能测试时,在并发量较大的情况下,发现有大量的接口报错报错内容为:java.net.BindException:Addressalreadyinuse:connect二......
  • 第3章 使用中间件管道处理请求(ASP.NET Core in Action, 2nd Edition)
    本章包括什么是中间件使用中间件服务静态文件使用中间件添加功能组合中间件以形成管道使用中间件处理异常和错误在上一章中,您对完整的ASP.NETCore应用程序进行了......
  • 目录(ASP.NET Core in Action, 2nd Edition)
    第一部分开始使用ASP.NETCore第1章开始使用ASP.NETCore1.1ASP.NETCore简介1.2何时选择ASP.NETCore1.3ASP.NETCore如何工作?1.4你将在本书中学到什么第2章创......
  • .NET中各个框架的关系
    .NET5及以上版本是.NETFramework和.NETCore统称。在.NETFramework4.8以后,微软不再对Farmwork框架进行更新但仍提供技术支持;在跨平台的.NETCore3.1以后,避免和.NETF......
  • 第4章 使用 Razor Pages 创建网站(ASP.NET Core in Action, 2nd Edition)
    本章重点RazorPages和模型视图-控制器(MVC)设计模式简介在ASP.NETCore中使用RazorPages在RazorPages和MVC控制器之间进行选择使用Action结果控制应用程序流在第3章中......
  • OpenWRT + tc/netem 搭建弱网环境
    OpenWRT+tc/netem搭建弱网环境来源 http://lcodecorex.github.io/2016/11/10/%E6%9E%81%E5%A3%B9%20+%20OpenWRT%20+%20tc:netem%20%E6%90%AD%E5%BB%BA%E5%BC%B1%E7%B......
  • U-Net在2022年相关研究的论文推荐
    前言 UNet可以算是FCN的一种变体,是最常用、最简单的一种分割模型,简单、高效、易懂、容易构建,且可以从小数据集中训练。Transformer、目标检测、语义分割交流群欢迎关......
  • asp.net 2.0 中生成PDF
       近期要用asp.net2.0生成PDF,看了下书,查了下资料,发现可以有组件帮得上忙,可以下载itextsharp(​​https://sourceforge.net/projects/itextsharp​​​)下载,然后在工程......
  • XSD 字符串 数据类型概述
    字符串数据类型用于可包含字符串的值。字符串数据类型(StringDataType)字符串数据类型可包含字符、换行、回车以及制表符。下面是一个关于某个scheme中字符串声明的例子:<x......