首页 > 数据库 >sql注入

sql注入

时间:2024-10-11 17:02:24浏览次数:7  
标签:return string sqlParam request System sql true 注入

//sql注入
 SqlInjectHelper myCheck = new SqlInjectHelper(Request);
 bool result = myCheck.CheckSqlInject();
 if (result)
 {
     //Response.ContentType = "text/plain";
     //Response.Write("您提交的数据有恶意字符!");
     Response.End();
 }

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace ReadAssessment.App_Start
{
    public class SqlInjectHelper: System.Web.UI.Page
    {
        private static string StrKeyWord = "select|insert|delete|from|count(|drop table|update|truncate|asc(|mid(|char(|xp_cmdshell|exec|master|net local group administrators|net user|or|and";
        private static string StrSymbol = ";|(|)|[|]|{|}|%|@|*|'|!";

        private HttpRequest request;
        public SqlInjectHelper(System.Web.HttpRequest _request)
        {
            this.request = _request;
        }
        public bool CheckSqlInject()
        {
            return CheckRequestQuery() || CheckRequestForm();
        }

        ///<summary>
        ///检查URL中是否包含Sql注入
        /// <param name="_request">当前HttpRequest对象</param>
        /// <returns>如果包含sql注入关键字,返回:true;否则返回:false</returns>
        ///</summary>
        public bool CheckRequestQuery()
        {
            if (request.QueryString.Count > 0)
            {
                foreach (string sqlParam in this.request.QueryString)
                {
                    if (sqlParam == "__VIEWSTATE")
                        continue;
                    if (sqlParam == "__EVENTVALIDATION")
                        continue;
                    if (CheckKeyWord(request.QueryString[sqlParam].ToLower()))
                    {
                        return true;
                    }
                }
            }
            return false;
        }
        ///<summary>
        ///检查提交的表单中是否包含Sql注入关键字
        /// <param name="_request">当前HttpRequest对象</param>
        /// <returns>如果包含sql注入关键字,返回:true;否则返回:false</returns>
        ///</summary>
        public bool CheckRequestForm()
        {
            if (request.Form.Count >0 )
            {
                foreach (string sqlParam in this.request.Form)
                {
                    if (sqlParam == "__VIEWSTATE")
                        continue;
                    if (sqlParam == "__EVENTVALIDATION")
                        continue;
                    if (CheckKeyWord(request.Form[sqlParam]))
                    {
                        return true;
                    }
                }
            }
            return false;
        }
        ///<summary>
        ///检查字符串中是否包含Sql注入关键字
        /// <param name="_key">被检查的字符串</param>
        /// <returns>如果包含sql注入关键字,返回:true;否则返回:false</returns>
        ///</summary>
        private static bool CheckKeyWord(string _key)
        {
            string[] pattenKeyWord = StrKeyWord.Split('|');
            string[] pattenSymbol = StrSymbol.Split('|');
            foreach (string sqlParam in pattenKeyWord)
            {
                if (_key.Contains(sqlParam + " ") || _key.Contains(" " + sqlParam))
                {
                    return true;
                }
            }
            foreach (string sqlParam in pattenSymbol)
            {
                if (_key.Contains(sqlParam))
                {
                    return true;
                }
            }
            return false;
        }

    }
}

 

标签:return,string,sqlParam,request,System,sql,true,注入
From: https://www.cnblogs.com/tiancaige/p/18458870

相关文章

  • mysqldump文件中有SET @@SESSION.SQL_LOG_BIN= 0;解决方法
    mysqldump文件中有SET@@SESSION.SQL_LOG_BIN=0mysqldump-uroot-pmypassword--all-databases>test.sqlmoretest.sql--MySQLdump10.13Distrib5.7.21,forlinux-glibc2.12(x86_64)----Host:localhostDatabase:-------------------------------------......
  • 2024年最详细的mysql主从复制来啦
    mysql主从复制一、主从复制简述MySQL主从复制是一种数据库复制技术,用于在主数据库(Master)和一个或多个从数据库(Slave)之间同步数据。这种技术允许数据从主数据库复制到从数据库,实现数据的冗余存储和读写分离,从而提高数据库的可用性和扩展性。二、主从复制的优势主从复制的......
  • MySQL主从配置及详解
    MySQL主从配置是一种常见的数据库架构模式,旨在提高数据库的可用性、可伸缩性和数据冗余性。以下是对MySQL主从配置的详细解析及案例分析。一、MySQL主从配置详解1.配置原理MySQL主从复制基于主服务器在二进制日志(binarylog)中跟踪所有对数据库的更改(如更新、删除等)。从服务器......
  • 1-17 openGauss逻辑模块之SQL引擎 -- openGauss课程
    大家好,欢迎大家收看本节课程对于初学者入门的学习,一些理论不容易理解或记住,所以本节课程【创新】采用了【正、反对比联想记忆】的方法,引入模拟场景中的肖荏盖的小故事。(模拟场景为虚构演绎,仅供教学,不要对号入座,懂不懂?明白吗?)【数据库的功能都是正向的,模拟场景中的肖荏盖做的......
  • php毕业设计下载(全套源码+配套论文)——基于php+mysql的社区交流网站设计与实现
    基于php+mysql的社区交流网站设计与实现(全套源码+配套论文)大家好,今天给大家介绍基于php+mysql的社区交流网站设计与实现,更多精选毕业设计项目实例见文末哦。文章目录:基于php+mysql的社区交流网站设计与实现(全套源码+配套论文)1、项目简介2、资源详情3、关键词:4、资源......
  • php毕业设计下载(全套源码+配套论文)——基于php+mysql的成绩查询系统设计与实现
    基于php+mysql的成绩查询系统设计与实现(全套源码+配套论文)大家好,今天给大家介绍基于php+mysql的成绩查询系统设计与实现,更多精选毕业设计项目实例见文末哦。文章目录:基于php+mysql的成绩查询系统设计与实现(全套源码+配套论文)1、项目简介2、资源详情3、关键词4、资源......
  • MySQL,多个timestamp字段的建表语句建表失败
    我使用的MySQL版本为5.7.42SELECTVERSION(); 建表语句示例CREATETABLEOrders(order_idBIGINTPRIMARYKEYCOMMENT'订单唯一标识符,主键',a_timeTIMESTAMP,b_timeTIMESTAMP)COMMENT='订单表,用于存储订单信息'; 报错为:Invaliddefaultvaluefor'b_time......
  • 智驾仿真测试实战之自动泊车HiL仿真测试:自动泊车系统简介|自动泊车HiL仿真测试系统|
    1.引言汽车进入智能化时代,自动泊车功能已成为标配。在研发测试阶段,实车测试面临测试场景覆盖度不足、效率低下和成本高昂等挑战。为解决这些问题,本文提出一种自动泊车HiL仿真测试系统方案,可大幅度提升测试效率及测试场景覆盖度、缩短测试周期、加速产品迭代升级。Jum......
  • 如何避免写出慢SQL?
    背景关于如何避免写出慢SQL,我发现自己对这方面的认识比较浅薄,生产环境中,慢SQL一旦产生,其代价还是比较大的,就比如数据库宕机,这是我们一定要去避免发生的现象。所以,一定要结合数据库,结合业务数据量去学习如何避免慢SQL,而不浅浅地只拘泥在理论层面。定量认识慢SQL作为一个合格的程......
  • 有一种能力认证,叫做工信人才PostgreSQL认证
    有想往数据库行业发展的人要找工作跳槽;有使用PostgreSQL数据库的员工想要升职加薪;有使用PostgreSQL数据库的企业想要招标投标信创项目;来看看工信人才PostgreSQL认证。工信人才PostgreSQL认证是由工业和信息化部人才交流中心主办、北京神脑资讯技术有限公司承办的一种能力......