c#

位置:IT落伍者 >> c# >> 浏览文章

.Net程序如何防止被注入(整站通用)


发布日期:2019年10月05日
 
.Net程序如何防止被注入(整站通用)

防止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}

以后需要修改的时候我们只需要修改以上三个文件对整个系统的维护将会大大提高效率当然你可以根据自己的需要增加其它的变量参数和数据类型

               

上一篇:C# 类中索引器的使用

下一篇:利用.NET Framework创建基于Windows的应用程序