|
private bool ProcessSqlStr(string Str)
{ bool ReturnValue = true; try { if (Str != "") { string SqlStr = "and |exec |insert |select |delete |update |count | * |chr |mid |master |truncate |char |declare "; string[] anySqlStr = SqlStr.Split('|'); foreach (string ss in anySqlStr) { if (Str.IndexOf(ss)>=0) { ReturnValue = false; } } } } catch { ReturnValue = false; } return ReturnValue; } 防止sql注入,通常一个一个文件修改不仅麻烦而且还有漏掉的危险,下面我说一上如何从整个系统防止注入。 (责任编辑:admin)做到以下三步,相信的程序将会比较安全了,而且对整个网站的维护也将会变的简单。 一、数据验证类: parameterCheck.cs public class parameterCheck{ public static bool isEmail(string emailString){ return System.Text.RegularExpressions.Regex.IsMatch(emailString, "['\\w_-]+([url=file://.%5B-//w_-%5D+)*@%5B-//w_-%5D+(//.%5B-//w_-%5D+)*//.%5Ba-zA-Z%5D%7B2,4]\\.['\\w_-]+)*@['\\w_-]+(\\.['\\w_-]+)*\\.[a-zA-Z]{2,4[/url]}"); } public static bool isInt(string intString){ return System.Text.RegularExpressions.Regex.IsMatch(intString ,"^([url=file://d%7B5%7D-//d%7B4%7D)%7C(//d%7B5%7D)$]\\d{5}-\\d{4})|(\\d{5})$[/url]"); //我这边是用"^([url=file://d*)$/]\\d*)$[/url]"通过 } public static bool isUSZip(string zipString){ return System.Text.RegularExpressions.Regex.IsMatch(zipString ,"^-[0-9]+$|^[0-9]+$"); } } 二、Web.config 在你的Web.config文件中,在<appSettings>下面增加一个标签:如下 <appSettings> <add key="safeParameters" value="OrderID-int32,CustomerEmail-email,ShippingZipcode-USzip ,typename-string"/> </appSettings> 其中key是<saveParameters>后面的值为"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.Split('-')[0]; String parameterType = safeParameters.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("USzip")){ if(!parameterCheck.isUSZip(parameterValue)) Response.Redirect("parameterError.aspx"); } else if (parameterType.Equals("email")){ if(!parameterCheck.isEmail(parameterValue)) Response.Redirect("parameterError.aspx"); } } |





骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价