为了防止SQL注入,通常一个一个地修改文件不仅很麻烦,而且丢失它们也很危险。以下是如何防止SQL注入从整个系统。
做到以下三步,相信你的程序会更安全,整个网站的维护也会更容易。
一、数据验证类
参数检查. cs
公共类参数Check{
公共静态bool isEmail(字符串emailString){
返回系统。text . regular expressions . regex . is match(email string,"['\\w_-]+(\\。
['\\w_-]+)*@['\\w_-]+(\\。['\\w_-]+)*\\。[a-zA-Z]{2,4 }”;
}
公共静态bool isInt(string intString){
返回系统。text . regular expressions . regex . is match(,"^(\\d{5}-\\d{4})|字符串
(\ \ d { 5 })$ ";
}
公共静态bool isUSZip(string zipString){
返回系统。text . regular expressions . regex . is match(zip string ,"^-[0-9]+$|^[0-9)
+$");
}
}
第二,Web.config
在Web.config文件中,在下面添加一个标记,如下所示:
USzip" />
其中key后跟“OrderId-int32”等。,其中“-”前面表示参数名称,如:OrderId,int32后面表示数据类型。
三。Global.asax
将以下段落添加到Global.asax中:
受保护的void Application_BeginRequest(对象发送方,EventArgs e){
String[] safeParameters = System。配置.配置设置.应用程序设置
["safeParameters"]。ToString()。拆分(',');
for(int I = 0;i < safeParameters。长度;i++){
string parameter name = safe parameters[I]。split('-')[0];
string parameter type = safe parameters[I]。split('-')[1];
isValidParameter(parameterName,parameter type);
}
}
public void is valid parameter(string parameter name,string parameterType){
string参数值=请求。query string[参数名];
if(parameterValue == null)返回;
if(参数类型。equals(" int 32 "){
如果(!parameter check . isint(parameter value))响应。redirect(" parameter error . aspx ");
}
else if (parameterType。Equals("double")){
如果(!parameter check . is double(parameter value))响应。redirect(" parameter error . aspx ");
}
else if (parameterType。Equals("USzip")){
如果(!parameter check . isuszip(parameter value))响应。redirect(" parameter error . aspx ");
}
else if (parameterType。等于("电子邮件"){
如果(!parameter check . isemail(parameter value))响应。redirect(" parameter error . aspx ");
}
}
以后只需要修改以上三个文件,整个系统的维护会大大提高效率。当然,你也可以根据自己的需要添加其他变量参数和数据类型。