asp.net 防止SQL注入攻击
程序员文章站
2024-03-11 15:57:01
只要做到以下三点,网站就会比较安全了而且维护也简单。 一、数据验证类 复制代码 代码如下:parametercheck.cs public class parameterc...
只要做到以下三点,网站就会比较安全了而且维护也简单。
一、数据验证类
parametercheck.cs
public class parametercheck{
public static bool isemail(string emailstring){
return system.text.regularexpressions.regex.ismatch(emailstring, "['\\w_-]+(\\.
['\\w_-]+)*@['\\w_-]+(\\.['\\w_-]+)*\\.[a-za-z]{2,4}");
}
public static bool isint(string intstring){
return system.text.regularexpressions.regex.ismatch(intstring ,"^(\\d{5}-\\d{4})|
(\\d{5})$");
}
public static bool isuszip(string zipstring){
return system.text.regularexpressions.regex.ismatch(zipstring ,"^-[0-9]+$|^[0-9]
+$");
}
}
二、web.config
在你的web.config文件中,在下面增加一个标签,如下:
<appsettings>
<add key="safeparameters" value="orderid-int32,customeremail-email,shippingzipcode-
uszip" />
</appsettings>
其中key是后面的值为“orderid-int32”等,其中“-”前面表示参数的名称比如:orderid,后面的int32表示数据类型。
三、global.asax
在global.asax中增加下面一段:
protected void application_beginrequest(object sender, eventargs e){
string[] safeparameters = system.configuration.configurationsettings.appsettings
["safeparameters"].tostring().split(',');
for(int i= 0 ;i < safeparameters.length; i++){
string parametername = safeparameters[i].split('-')[0];
string parametertype = safeparameters[i].split('-')[1];
isvalidparameter(parametername, parametertype);
}
}
public void isvalidparameter(string parametername, string parametertype){
string parametervalue = request.querystring[parametername];
if(parametervalue == null) return;
if(parametertype.equals("int32")){
if(!parametercheck.isint(parametervalue)) response.redirect("parametererror.aspx");
}
else if (parametertype.equals("double")){
if(!parametercheck.isdouble(parametervalue)) response.redirect("parametererror.aspx");
}
else if (parametertype.equals("uszip")){
if(!parametercheck.isuszip(parametervalue)) response.redirect("parametererror.aspx");
}
else if (parametertype.equals("email")){
if(!parametercheck.isemail(parametervalue)) response.redirect("parametererror.aspx");
}
}
以后需要修改的时候大家只修改以上三个文件就可以了,整个系统的维护效率将会提高,当然你也可以根据自己的需要增加其它的变量参数和数据类型等等。
一、数据验证类
复制代码 代码如下:
parametercheck.cs
public class parametercheck{
public static bool isemail(string emailstring){
return system.text.regularexpressions.regex.ismatch(emailstring, "['\\w_-]+(\\.
['\\w_-]+)*@['\\w_-]+(\\.['\\w_-]+)*\\.[a-za-z]{2,4}");
}
public static bool isint(string intstring){
return system.text.regularexpressions.regex.ismatch(intstring ,"^(\\d{5}-\\d{4})|
(\\d{5})$");
}
public static bool isuszip(string zipstring){
return system.text.regularexpressions.regex.ismatch(zipstring ,"^-[0-9]+$|^[0-9]
+$");
}
}
二、web.config
在你的web.config文件中,在下面增加一个标签,如下:
复制代码 代码如下:
<appsettings>
<add key="safeparameters" value="orderid-int32,customeremail-email,shippingzipcode-
uszip" />
</appsettings>
其中key是后面的值为“orderid-int32”等,其中“-”前面表示参数的名称比如:orderid,后面的int32表示数据类型。
三、global.asax
在global.asax中增加下面一段:
复制代码 代码如下:
protected void application_beginrequest(object sender, eventargs e){
string[] safeparameters = system.configuration.configurationsettings.appsettings
["safeparameters"].tostring().split(',');
for(int i= 0 ;i < safeparameters.length; i++){
string parametername = safeparameters[i].split('-')[0];
string parametertype = safeparameters[i].split('-')[1];
isvalidparameter(parametername, parametertype);
}
}
public void isvalidparameter(string parametername, string parametertype){
string parametervalue = request.querystring[parametername];
if(parametervalue == null) return;
if(parametertype.equals("int32")){
if(!parametercheck.isint(parametervalue)) response.redirect("parametererror.aspx");
}
else if (parametertype.equals("double")){
if(!parametercheck.isdouble(parametervalue)) response.redirect("parametererror.aspx");
}
else if (parametertype.equals("uszip")){
if(!parametercheck.isuszip(parametervalue)) response.redirect("parametererror.aspx");
}
else if (parametertype.equals("email")){
if(!parametercheck.isemail(parametervalue)) response.redirect("parametererror.aspx");
}
}
以后需要修改的时候大家只修改以上三个文件就可以了,整个系统的维护效率将会提高,当然你也可以根据自己的需要增加其它的变量参数和数据类型等等。
上一篇: JRuby LDAP Patch