防止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)}
以後需要修改的時候我們只需要修改以上三個文件對整個系統的維護將會大大提高效率當然你可以根據自己的需要增加其它的變量參數和數據類型
From:http://tw.wingwit.com/Article/program/net/201311/13234.html