首页后端开发ASP.NETc#如何防止sql注入?

c#如何防止sql注入?

时间2024-01-31 06:28:03发布访客分类ASP.NET浏览1075
导读:收集整理的这篇文章主要介绍了c#如何防止sql注入?,觉得挺不错的,现在分享给大家,也给大家做个参考。对于网站的安全性,是每个网站开发者和运营者最关心的问题。网站一旦出现漏洞,那势必将造成很大的损失。为了提高网站的安全性,首先网站要防注入。...
收集整理的这篇文章主要介绍了c#如何防止sql注入?,觉得挺不错的,现在分享给大家,也给大家做个参考。对于网站的安全性,是每个网站开发者和运营者最关心的问题。网站一旦出现漏洞,那势必将造成很大的损失。为了提高网站的安全性,首先网站要防注入。

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

方法一:

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

 appSettings>
       add key="safeParameters" value="OrderID-int32,CustomerEmail-email,ShippingZipcode-USzip" />
     /appSettings>
    

其中key是 saveParameters> 后面的值为”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");  }
  }
    

方法三:

使用字符串过滤类

 /**////  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注入?的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: c语言的代码是什么?下一篇:sqlhelper类是什么猜你在找的ASP.NET相关文章 C# 一些面试试题的实例教程2022-05-16.NET 6开发TodoList应用之请求日志组件HttpLogging介绍2022-04-16.NET 6中间件Http Logging使用介绍2022-04-16gojs一些实用的高级用法2022-04-16.NET6开发TodoList应用之实现查询排序2022-04-16.NET6开发TodoList应用之实现数据塑形2022-04-16.NET微服务架构CI/CD自动打包镜像2022-04-16Asp.Net Core 使用Monaco Editor 实现代码编辑器功能2022-04-16.NET微服务架构CI/CD自动构建Jenkins+Gitee2022-04-16.Net Core微服务网关Ocelot集成Consul2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: c#如何防止sql注入?
本文地址: https://pptw.com/jishu/593600.html
学好c语言可以干什么? es6中怎么将数组转为对象

游客 回复需填写必要信息