在Global.asax文件里实现通用防结构化查询语言注入漏洞程序(适应于发布/获取请求)
首先,创建一个sqlinobjectionhelper类完成恶意代码的检查代码如下:复制代码代码如下:使用系统;使用系统。集合。通用;使用系统Linq .使用系统网络.使用系统。文本。正则表达式;///summary///sqlineobjectonhelper的摘要说明////摘要公共类sqlineobjectonhelper {///summary///获取邮政的数据////summary////param name=' request '/param////returns/returns public static bool ValidUrlData(string request){ bool result=false;if(request==' POST '){ for(int I=0;i HttpContext .当前。请求。表单。计数;I){结果=有效数据(HttpContext .当前。请求。表格[i].ToString());if(result){ break;} } } else { for(int I=0;i HttpContext .当前。请求。查询字符串。计数;I){结果=有效数据(HttpContext .当前请求。查询电话.ToString());if(result){ break;} } }返回结果;} ///摘要///验证是否存在注入代码////summary////param name=' inputData '/param////returns/returns private static bool validate(字符串inputData) { //验证输入数据是否包含恶意集合if (Regex .IsMatch(inputData,GetRegexString())){ return true;} else { return false} } ///摘要///获取正则表达式////summary ///returns/returns私有静态字符串GetRegexString() { //构造结构化查询语言的注入关键字符string[] strChar={ 'and ',' exec ',' insert ',' select ',' update ',' delete ',' count ',' from ',' drop ',' asc ',' or ',' Char ',' % ',' : ',' \ ','-',' chr ',' master ',' mid ',' truncate ',' Char ',' SiteName ',' add ',' xp_cmdshell ',' net user ',' net localgroup administrators ',' exec master。dbo。XP _ cmdshell ' };字符串str_Regex=' .*(';for(int I=0;我是strChar .长度-1;I){ str _ Regex=StrChar[I]' | ';} str_Regex=strChar[strChar .长度- 1]').*';返回str _ Regex} }有此类后即可使用Global.asax中的Application_BeginRequest(对象发送方,事件参数e)事件来实现表单或者统一资源定位器提交数据的获取,获取后传给sqlinobjectionhelper类ValidUrlData方法来完成检查代码如下复制代码代码如下:受保护的void Application_BeginRequest(对象发送方,EventArgs e){ bool result=false;结果=SQLInjectionHelper .有效数据(请求请求类型。toupper());如果(结果){回应.写('您提交的数据有恶意字符');回应end();} } 下面以一个小程序测试:创建一个页面,如下复制代码代码如下: %@页面语言=' c# ' AutoEventWireup=' true ' CodeFile=' Default。aspx。cs ' Inherits=' _ Default ' %!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN ' ' http://www .w3。org/TR/XHTML 1/DTD/XHTML L1-过渡。DTD ' html xmlns=' http://www .w3。org/1999/XHTML ' head runat=' server ' title/title/head body form ID=' form 1 ' runat=' server ' div ' ASP 3360 textbox ID=' textbox 1 ' runat='获取邮政数据onclick=' btnPost _ Click '//div ASP :按钮ID=' btnGet ' runat=' server ' Text='获取得到数据onclick=' btnGet _ Click '//form/body/html分别添加单击事件,如下复制代码代码如下:受保护的void btnPost_Click(对象发送者,事件参数e) { }受保护的void btnGet_Click(对象发送者,事件参数{回应.重定向(' Default.aspx?a=1b=2c=3 ';} 在文本框中输入非法字符串,无论邮政请求还是得到请求,都会被防结构化查询语言注入程序所截获
图一测试防结构化查询语言注入程序的页面
图2错误信息
版权声明:在Global.asax文件里实现通用防结构化查询语言注入漏洞程序(适应于发布/获取请求)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。