c#如何防止sql注入?

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

c#如何防止sql注入?

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

方法一:

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

  

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

方法二:

在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[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");  }  }

方法三:

使用字符串过滤类

 /**////   /// 处理用户提交的请求  ///   public static void StartProcessRequest()  {  // System.Web.HttpContext.Current.Response.Write("alert('dddd');");  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("alert('请勿非法提交!');history.back();");  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("alert('请勿非法提交!');history.back();");  System.Web.HttpContext.Current.Response.End();  }  }  }  }  catch  {  // 错误处理: 处理用户提交信息!  }  }  /**////   /// 分析用户请求是否正常  ///   /// 传入用户提交数据  /// 返回是否含有SQL注入式攻击代码  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注入?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1433229.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 09:00:27
下一篇 2025年12月17日 09:00:46

相关推荐

发表回复

登录后才能评论
关注微信