c。net全站防止SQL注入类的代码,需要的朋友可以参考一下 闲言碎语先不谈,上代码, 我这个是在Web项目,首先先创建SqlChecker类,用于校验前端传到后台所有请求中的过滤 usingSusingSystem。Collections。GusingSystem。LusingSystem。WnamespaceWeb{publicclassSqlChecker{当前请求对象privateHttpR当前响应对象privateHttpR安全Url,当出现Sql注入时,将导向到的安全页面,如果没赋值,则停留在当前页面privatestringsafeUrlString。ESql注入时,可能出现的sql关键字,可根据自己的实际情况进行初始化,每个关键字由分隔开来privateconststringStrKeyWordselectinsertdeletefromcount(droptableupdatetruncateasc(mid(char(xpcmdshellexecmasternetlocalgroupadministrators:privateconststringStrKeyWordselectinsertdeletefromdroptableupdatetruncateexecmasternetlocalgroupadministrators:Sql注入时,可能出现的特殊符号,,可根据自己的实际情况进行初始化,每个符号由分隔开来privateconststringStrR,()〔〕}{!;privateconststringStrRegex!;publicSqlChecker(){TODO:在此处添加构造函数逻辑}summary由此构造函数创建的对象,在验证Sql注入之后将停留在原来页面上summaryparamnamerequest当前请求的Request对象paramparamnameresponse当前请求的Response对象parampublicSqlChecker(HttpRequestrequest,HttpResponseresponse){this。this。}summary由此构造函数创建的对象,在验证Sql注入之后将请求将导向由safeUrl指定的安全url页面上summaryparamnamerequest当前请求的Request对象paramparamnameresponse当前请求的Response对象paramparamnamesafeUrl验证Sql注入之后将导向的安全urlparampublicSqlChecker(HttpRequestrequest,HttpResponseresponse,stringsafeUrl){this。this。this。safeUrlsafeU}summary只读属性SQL关键字summarypublicstringKeyWord{get{returnStrKeyW}}summary只读属性过滤特殊字符summarypublicstringRegexString{get{returnStrR}}summary当出现Sql注入时需要提示的错误信息(主要是运行一些客户端的脚本)summarypublicstringMsg{get{}}summary检查URL参数中是否带有SQL注入的可能关键字。summaryreturns存在SQL注入关键字时返回true,否则返回falsereturnspublicboolCheckRequestQuery(){if(request。QueryString。Count!0){若URL中参数存在,则逐个检验参数。foreach(stringqueryNameinthis。request。QueryString){过虑一些特殊的请求状态值,主要是一些有关页面视图状态的参数if(queryNameVIEWSTATEqueryNameEVENTVALIDATION)开始检查请求参数值是否合法if(CheckKeyWord(request。QueryString〔queryName〕)){只要存在一个可能出现Sql注入的参数,则直接退出}}}}summary检查提交表单中是否存在SQL注入的可能关键字summaryreturns存在SQL注入关键字时返回true,否则返回falsereturnspublicboolCheckRequestForm(){if(request。Form。Count0){若获取提交的表单项个数不为0,则逐个比较参数foreach(stringqueryNameinthis。request。Form){过虑一些特殊的请求状态值,主要是一些有关页面视图状态的参数if(queryNameVIEWSTATEqueryNameEVENTVALIDATION)开始检查提交的表单参数值是否合法if(CheckKeyWord(request。Form〔queryName〕)){只要存在一个可能出现Sql注入的参数,则直接退出}}}}summary检查sword是否包涵SQL关键字summaryparamnamesWord需要检查的字符串paramreturns存在SQL注入关键字时返回true,否则返回falsereturnspublicboolCheckKeyWord(stringsWord){模式1:对应Sql注入的可能关键字string〔〕patten1StrKeyWord。Split();模式2:对应Sql注入的可能特殊符号string〔〕patten2StrRegex。Split();开始检查模式1:Sql注入的可能关键字的注入情况foreach(stringsqlKeyinpatten1){if(sWord。IndexOf(sqlKey)0sWord。IndexOf(sqlKey)0){只要存在一个可能出现Sql注入的参数,则直接退出}}开始检查模式1:Sql注入的可能特殊符号的注入情况foreach(stringsqlKeyinpatten2){if(sWord。IndexOf(sqlKey)0){只要存在一个可能出现Sql注入的参数,则直接退出}}}summary执行Sql注入验证summarypublicvoidCheck(){if(CheckRequestQuery()CheckRequestForm()){response。Write(Msg);response。End();}}}} 创建好SqlChecker后,就要考虑在那个地方使用。下面说全局性设置使用: 在Global。asax。cs中找到ApplicationBeginRequest,如果找不到Global。asax也可CtrlF进行搜索, 范围可以选择【整个解决方案】点击进行查找。 具体代码如下: protectedvoidApplicationBeginRequest(objectsender,EventArgse){SqlCheckerSqlCheckernewSqlChecker(this。Request,this。Response);或SqlCheckerSqlCheckernewSqlChecker(this。Request,this。Response,safeUrl);SqlChecker。Check();} 局部性设置使用,在具体的Colltroller的方法里加入:SqlCheckerSqlCheckernewSqlChecker(this。Request,this。Response);或SqlCheckerSqlCheckernewSqlChecker(this。Request,this。Response,safeUrl);SqlChecker。Check(); 以上就是C。net防止SQL注入的代码,如果有些关键字和特殊符号不想加在过滤中可以自定义SqlChecker类的StrKeyWord变量和StrRegex变量