范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

c。net全站防止SQL注入类的代码

  c#.net全站防止SQL注入类的代码,需要的朋友可以参考一下
  闲言碎语先不谈,上代码,
  我这个是在Web项目,首先先创建SqlChecker类,用于校验前端传到后台所有请求中的过滤
  using System; using System.Collections.Generic; using System.Linq; using System.Web;  namespace Web {     public class SqlChecker     {         //当前请求对象         private HttpRequest request;         //当前响应对象         private HttpResponse response;         //安全Url,当出现Sql注入时,将导向到的安全页面,如果没赋值,则停留在当前页面         private string safeUrl = String.Empty;          //Sql注入时,可能出现的sql关键字,可根据自己的实际情况进行初始化,每个关键字由"|"分隔开来         //private const string StrKeyWord = @"select|insert|delete|from|count(|drop table|update|truncate|asc(|mid(|char(|xp_cmdshell|exec master|netlocalgroup administrators|:|net user|""|or|and";         private const string StrKeyWord = @"select|insert|delete|from|drop table|update|truncate|exec master|netlocalgroup administrators|:|net user|or|and";         //Sql注入时,可能出现的特殊符号,,可根据自己的实际情况进行初始化,每个符号由"|"分隔开来         private const string StrRegex = @"-|;|,|/|(|)|[|]|}|{|%|@|*|!|"";         //private const string StrRegex = @"=|!|"";         public SqlChecker()         {             //             // TODO: 在此处添加构造函数逻辑             //         }         ///          /// 由此构造函数创建的对象,在验证Sql注入之后将停留在原来页面上         ///          /// 当前请求的 Request 对象         /// 当前请求的 Response 对象         public SqlChecker(HttpRequest _request, HttpResponse _response)         {             this.request = _request;             this.response = _response;         }         ///          /// 由此构造函数创建的对象,在验证Sql注入之后将请求将导向由 _safeUrl 指定的安全url页面上         ///          /// 当前请求的 Request 对象         /// 当前请求的 Response 对象         /// 验证Sql注入之后将导向的安全 url         public SqlChecker(HttpRequest _request, HttpResponse _response, string _safeUrl)         {             this.request = _request;             this.response = _response;             this.safeUrl = _safeUrl;         }         ///          /// 只读属性 SQL关键字         ///          public string KeyWord         {             get             {                 return StrKeyWord;             }         }         ///          /// 只读属性过滤特殊字符         ///          public string RegexString         {             get             {                 return StrRegex;             }         }         ///          /// 当出现Sql注入时需要提示的错误信息(主要是运行一些客户端的脚本)         ///          public string Msg         {             get             {                 string msg = "";                 return msg;             }         }         ///          /// 检查URL参数中是否带有SQL注入的可能关键字。         ///          /// 存在SQL注入关键字时返回 true,否则返回 false         public bool CheckRequestQuery()         {             bool result = false;             if (request.QueryString.Count != 0)             {                 //若URL中参数存在,则逐个检验参数。                 foreach (string queryName in this.request.QueryString)                 {                     //过虑一些特殊的请求状态值,主要是一些有关页面视图状态的参数                     if (queryName == "__VIEWSTATE" || queryName == "__EVENTVALIDATION")                         continue;                     //开始检查请求参数值是否合法                     if (CheckKeyWord(request.QueryString[queryName]))                     {                         //只要存在一个可能出现Sql注入的参数,则直接退出                         result = true;                         break;                     }                 }             }             return result;         }         ///          /// 检查提交表单中是否存在SQL注入的可能关键字         ///          /// 存在SQL注入关键字时返回 true,否则返回 false         public bool CheckRequestForm()         {             bool result = false;             if (request.Form.Count > 0)             {                 //若获取提交的表单项个数不为0,则逐个比较参数                 foreach (string queryName in this.request.Form)                 {                     //过虑一些特殊的请求状态值,主要是一些有关页面视图状态的参数                     if (queryName == "__VIEWSTATE" || queryName == "__EVENTVALIDATION")                         continue;                     //开始检查提交的表单参数值是否合法                     if (CheckKeyWord(request.Form[queryName]))                     {                         //只要存在一个可能出现Sql注入的参数,则直接退出                         result = true;                         break;                     }                 }             }             return result;         }         ///          /// 检查_sword是否包涵SQL关键字         ///          /// 需要检查的字符串         /// 存在SQL注入关键字时返回 true,否则返回 false         public bool CheckKeyWord(string _sWord)         {             bool result = false;             //模式1 : 对应Sql注入的可能关键字             string[] patten1 = StrKeyWord.Split("|");             //模式2 : 对应Sql注入的可能特殊符号             string[] patten2 = StrRegex.Split("|");             //开始检查 模式1:Sql注入的可能关键字 的注入情况             foreach (string sqlKey in patten1)             {                 if (_sWord.IndexOf(" " + sqlKey) >= 0 || _sWord.IndexOf(sqlKey + " ") >= 0)                 {                     //只要存在一个可能出现Sql注入的参数,则直接退出                     result = true;                     break;                 }             }             //开始检查 模式1:Sql注入的可能特殊符号 的注入情况             foreach (string sqlKey in patten2)             {                 if (_sWord.IndexOf(sqlKey) >= 0)                 {                     //只要存在一个可能出现Sql注入的参数,则直接退出                     result = true;                     break;                 }             }             return result;         }         ///          /// 执行Sql注入验证         ///          public void Check()         {             if (CheckRequestQuery() || CheckRequestForm())             {                 response.Write(Msg);                 response.End();             }         }     } }
  创建好SqlChecker后,就要考虑在那个地方使用。下面说全局性设置使用:
  在Global.asax.cs中找到Application_BeginRequest,如果找不到Global.asax 也可Ctrl+F进行搜索,
  范围可以选择【整个解决方案】点击 进行查找。
  具体代码如下:
  protected void Application_BeginRequest(object sender, EventArgs e)         {             SqlChecker SqlChecker = new SqlChecker(this.Request, this.Response);             //或 SqlChecker SqlChecker = new SqlChecker(this.Request,this.Response,safeUrl);             SqlChecker.Check();         }
  局部性设置使用,在具体的Colltroller的方法里加入: SqlChecker SqlChecker = new SqlChecker(this.Request, this.Response); //或 SqlChecker SqlChecker = new SqlChecker(this.Request,this.Response,safeUrl); SqlChecker.Check();
  以上就是C#.net防止SQL注入的代码,如果有些关键字和特殊符号不想加在过滤中可以自定义SqlChecker类的StrKeyWord变量和StrRegex变量

国内最争光沙漠,治理上堪称世界奇迹沙漠荒漠化是许多国家面临的问题,很多国家开始了针对沙漠荒漠化的治疗,中国的治疗效果非常显著。今天我们要说的沙漠是世界沙漠中最丢人的沙漠,他就是天漠。它位于河北怀来县,它的地理位置可国内油价或再迎调整?具体什么原因?加油站工作者作出解读引言汽车,已经成为国内最为主要的一种交通工具,市场保有量也极其高。燃油,作为汽车发挥交通功能的重要能源,它的价格也影响着居民的乘车出行。很多年前,石油价格一直保持在较低水平,居民对3岁分床,5岁分房?不一定是对的,最佳分床年龄是几岁?这几天,我在的宝妈群里,天天讨论给孩子分床睡的事,一个妈妈说我家孩子三岁了,已经分床睡了。越小分床睡越好分,越大就不好分了。一听这话很多宝妈就开始焦虑了怎么办呢?我家孩子都5岁了还苹果芯片供应商准备最早在2025年开始生产2nm芯片据DigiTimes报道,苹果最早可能在2025年为其iPhone和Mac芯片采用2nm工艺,因为该公司的主要芯片供应商台积电已开始计划在当年年初生产该工艺。Apple最新的所有芯定了,苹果iOS16功能大调整,新增的五大实用功能苹果iOS16全面曝光,新增的这些实用内容都是果粉需要的根据之前的爆料,苹果2022年WWDC定于6月6日举办,那么很明显,也就是在6月6日,iOSiPadOSwatchOS有望迎地球还能存在多久?中科院院士地球至少还有45亿年寿命在这几年地球世界频繁上演各种剧情的情况下,很少有人意识到人类文明以及其他所有生物都生活在一艘名为地球的飞船上。而且这艘飞船在未来很长一段时间内都是唯一的一艘,如果它出了什么问题,那苹果和英特尔将成为台积电首批2nm芯片客户,或用于LunarLake的图形模块随着台积电(TSMC)在3nm工艺开发上取得突破,2nm工艺开发似乎也走上了正规,时间表也变得更加清晰。此前台积电总裁魏哲家证实,N2制程节点将如预期那样使用Gateallarou特战荣耀肖飞虎上线,肖飞虎的一条手机短信暴露其卧底身份特战荣耀征文33集肖飞虎上线,成了毒贩。肖飞原著中黑化的,但是第一集猎豹小队营救的却是肖飞,31集演习中也没有看到肖飞的身影,那就是一个答案龙虎狗全部退役了,退役后去了哪里了呢?连如果手机想用三四年,建议买这3款旗舰手机,一步到位,几乎0差评买手机当然是希望手机能用很长时间,一来不用浪费太多钱,二来不用老是给新手机传数据,很是方便,三来又浪费精力,要花时间去研究心机。我有个朋友就很喜欢买便宜的手机,才不到两年就卡了,而国产手机真的够国产吗?随着国产手机不断的在国内外市场占据市场份额的高地,国产手机的价格也在不断的水涨船高,从价格上看,动辄5000,6000的定价,甚至有些型号在主要配置不变的情况下,仅仅是跟一些高端汽喜讯!李晓霞官宣新工作,感谢刘国梁推荐,薪水曝光,国乒有福了李晓霞是国家乒乓球队最好的球员之一。在她的职业生涯中,李晓霞赢得了奥运会女子单打女子团体和世界杯女子单打等19个世界冠军。如果她不选择在28岁的巅峰时期退休,李晓霞的职业生涯可能会
河南人喝酒必上的四道硬菜,好吃不贵简单美味,老酒鬼的最爱一提到河南的下酒菜,我的脑袋里就会浮现出这样一幅景象。傍晚,昏黄的夕阳,洒进老居民楼的旧房子里。穿着短裤背心的父亲,坐在桌子旁。一口菜,一口酒,好不快活。父亲爱喝酒,还爱吃下酒菜,婴儿出生的体重暗示着智商的高低,有关研究越接近这个数字越聪明导语孩子出生时的体重,暗示着智商的高低,科学研究发现,出生时这个体重的孩子,智商更高哦。01hr前段时间,办公室同事生下了一个9斤重的大胖儿子,比女儿出生时,体重足足重了近3斤,身内地情史干净的6位美人,个个嫁给初恋,出道多年零绯闻很多人对娱乐圈的印象不好,认为娱乐圈太乱。经常有明星爆出绯闻丑闻,让吃瓜群众目不暇接,唏嘘不已。其实,娱乐圈也有不少优秀低调的明星,洁身自好,静守本心,不炒作无绯闻。之前小橘已经为百万主播带六万粉丝砍拼多多失败,第二天却收到优惠券?想必大家都有过被几百年不联系的朋友要求帮忙砍拼多多的经历。3。17号,一个名字叫做超级小桀的游戏主播,在自己的直播间做了一场实验。和观看直播的粉丝们一起砍一个商品,看看最后到底能不易建联伤势出炉!杜锋大脑技术台!粉丝建议道歉禁赛罚款嗨喽大家好,欢迎收听啊炜聊体育!时至北京时间3月22日,CBA常规赛也完美收官啦。在此恭喜进入季后赛的十二支球队,希望他们在接下来的季后赛大放光彩,同时,也要鼓励没有进入前12名的凌晨6点!法国媒体做出争议报道梅西姆巴佩很意外,球迷骂声一片北京时间3月23日凌晨6点,欧洲联赛传来最新消息,日前,针对大巴黎的情况,法国媒体RMC做出争议报道,他们表示巴黎圣日耳曼更衣室氛围越来越紧张,内部现在分裂成了两大派系,而这样的爆真香男孩王境泽,相亲节目狂撩女嘉宾,如今真的大变样了吗?你可能没听过王境泽这个名字,但你一定听过这句真香。七年前参加变形记,王境泽上一秒还誓死不吃一口饭。可下一秒端起饭碗狼吞虎咽起来,简直便啪啪打脸。凭借这句真香爆火全网,七年后的王境泽阿曼媒体布下迷魂阵,妄图影响中国队阿曼媒体报道的国家队大部分是年轻球员不真实,准备与越南和中国比赛的阿曼队只有2名23岁以下的球员。阿曼队没有像这个国家的媒体所说的那样,将与中国队的比赛视为培养年轻球员的机会。从与演员陶虹眼看着老公跟人传绯闻,她的抉择让人又气又不解什么叫出轨?我觉得肉体上的事,那都不叫个事!2016年9月21日的节目金星秀中,陶虹对金星莞尔一笑,说出了这样的吓人一跳的名句。听到陶虹这样说,纵然是一向快人快语的金星显然也被雷到演员胡军与刘嘉玲两度传绯闻,和卢芳恩爱的背后,有艰辛和泪水关注我,每天带来名人感动的故事!胡军,是一个不可多得的实力派演员,曾主演过天龙八部建国大业十月围城救火英雄一江春水向东流等等作品,获得过中国电视金鹰奖观众喜爱的电视剧男演员奖香港电高原与王菲争爱,却与窦唯不到两年就离婚,今52岁仍单身一hr1970年高原出生于贵州大山里,在她三个月的时候母亲把她带到了北京!高原的父亲高飞是著名演员,在高原10岁的时候,她的父亲高飞就因为与日本著名女演员栗原小卷一个出演电视剧望乡