防止sql注入通常一个一个文件修改不仅麻烦而且还有漏掉的危险下面我说一上如何从整个系统防止注入
做到以下三步相信的程序将会比较安全了而且对整个网站的维护也将会变的简单
一数据验证类parameterCheckcs
public class parameterCheck{ public static bool isEmail(string emailString){ return SystemTextRegularExpressionsRegexIsMatch(emailString [\\w_]+(\\[\\w_]+)*@[\\w_]+(\\[\\w_]+)*\\[azAZ]{})} public static bool isInt(string intString){ return SystemTextRegularExpressionsRegexIsMatch(intString ^(\\d{}\\d{})(\\d{})$)} public static bool isUSZip(string zipString){ return SystemTextRegularExpressionsRegexIsMatch(zipString ^[]+$^[]+$)}
二nfig
在你的nfig文件中在<appSettings>下面增加一个标签如下
<appSettings> <add key=safeParameters value=OrderIDintCustomerEmailemailShippingZipcodeUSzip /> </appSettings>
其中key是<saveParameters>后面的值为OrderIdint等其中前面表示参数的名称比如OrderId后面的int表示数据类型
三Globalasax
在Globalasax中增加下面一段
protected void Application_BeginRequest(Object sender EventArgs e){ String[] safeParameters = SystemConfigurationConfigurationSettingsAppSettings[safeParameters]ToString()Split()for(int i= i < safeParametersLength i++){ String parameterName = safeParameters[i]Split()[]String parameterType = safeParameters[i]Split()[]isValidParameter(parameterName parameterType)}
public void isValidParameter(string parameterName string parameterType){ string parameterValue = RequestQueryString[parameterName]if(parameterValue == null) return
if(parameterTypeEquals(int)){ if(!parameterCheckisInt(parameterValue)) ResponseRedirect(parameterErroraspx)} else if (parameterTypeEquals(double)){ if(!parameterCheckisDouble(parameterValue)) ResponseRedirect(parameterErroraspx)} else if (parameterTypeEquals(USzip)){ if(!parameterCheckisUSZip(parameterValue)) ResponseRedirect(parameterErroraspx)} else if (parameterTypeEquals(email)){ if(!parameterCheckisEmail(parameterValue)) ResponseRedirect(parameterErroraspx)}
以后需要修改的时候我们只需要修改以上三个文件对整个系统的维护将会大大提高效率当然你可以根据自己的需要增加其它的变量参数和数据类型