我是靠谱客的博主 可爱凉面,这篇文章主要介绍c#如何防止sql注入?,现在分享给大家,希望可以做个参考。

对于网站的安全性,是每个网站开发者和运营者最关心的问题。网站一旦出现漏洞,那势必将造成很大的损失。为了提高网站的安全性,首先网站要防注入。

下面我们给大家介绍C#防止sql注入的几种方法:

方法一:

在Web.config文件下面增加一个如下标签:

复制代码
1
2
3
< appSettings>   < add key="safeParameters" value="OrderID-int32,CustomerEmail-email,ShippingZipcode-USzip" /> < /appSettings>
登录后复制

其中key是 < saveParameters>后面的值为”OrderId-int32”等,其中”-“前面表示参数的名称比如:OrderId,后面的int32表示数据类型。

方法二:

在Global.asax中增加下面一段:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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("USzip")){   if(!parameterCheck.isUSZip(parameterValue)) Response.Redirect("parameterError.aspx");   }   else if (parameterType.Equals("email")){   if(!parameterCheck.isEmail(parameterValue)) Response.Redirect("parameterError.aspx");   }   }
登录后复制

方法三:

使用字符串过滤类

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/**//// < summary>   /// 处理用户提交的请求   /// < /summary>   public static void StartProcessRequest()   {   // System.Web.HttpContext.Current.Response.Write("< script>alert('dddd');< /script>");   try   {   string getkeys = "";  //string sqlErrorPage = System.Configuration.ConfigurationSettings.AppSettings["CustomErrorPage"].ToString();   if (System.Web.HttpContext.Current.Request.QueryString != null)   {   for(int i=0;i< System.Web.HttpContext.Current.Request.QueryString.Count;i++)  {   getkeys = System.Web.HttpContext.Current.Request.QueryString.Keys[i];  if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.QueryString[getkeys],0))   {   //System.Web.HttpContext.Current.Response.Redirect (sqlErrorPage+"?errmsg=sqlserver&sqlprocess=true");   System.Web.HttpContext.Current.Response.Write("< script>alert('请勿非法提交!');history.back();< /script>");   System.Web.HttpContext.Current.Response.End();   }   }   }   if (System.Web.HttpContext.Current.Request.Form != null)   {   for(int i=0;i< System.Web.HttpContext.Current.Request.Form.Count;i++)  {   getkeys = System.Web.HttpContext.Current.Request.Form.Keys[i];  if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.Form[getkeys],1))   {   //System.Web.HttpContext.Current.Response.Redirect (sqlErrorPage+"?errmsg=sqlserver&sqlprocess=true");   System.Web.HttpContext.Current.Response.Write("< script>alert('请勿非法提交!');history.back();< /script>");   System.Web.HttpContext.Current.Response.End();   }   }   }   }   catch   {   // 错误处理: 处理用户提交信息!   }   }   /**//// < summary>   /// 分析用户请求是否正常   /// < /summary>   /// < param name="Str">传入用户提交数据< /param>   /// < returns>返回是否含有SQL注入式攻击代码< /returns>   private static bool ProcessSqlStr(string Str,int type)   {   string SqlStr;  if(type == 1)   SqlStr = "exec |insert |select |delete |update |count |chr |mid |master |truncate |char |declare ";  else   SqlStr = "'|and|exec|insert|select|delete|update|count|*|chr|mid|master|truncate|char|declare";  bool ReturnValue = true;  try   {   if (Str != "")   {   string[] anySqlStr = SqlStr.Split('|');   foreach (string ss in anySqlStr)   {   if (Str.IndexOf(ss)>=0)   {   ReturnValue = false;  }   }   }   }   catch   {   ReturnValue = false;  }   return ReturnValue;  }   #endregion  }   }
登录后复制

相关视频教程推荐:《C#教程》

以上就是c#如何防止sql注入?的详细内容,更多请关注靠谱客其它相关文章!

最后

以上就是可爱凉面最近收集整理的关于c#如何防止sql注入?的全部内容,更多相关c#如何防止sql注入内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(91)

评论列表共有 0 条评论

立即
投稿
返回
顶部