好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁(yè) > 知識(shí)庫(kù) > ASP.NET過(guò)濾類SqlFilter,防止SQL注入 原創(chuàng)

ASP.NET過(guò)濾類SqlFilter,防止SQL注入 原創(chuàng)

熱門標(biāo)簽:遂寧市地圖標(biāo)注app 塔城代理外呼系統(tǒng) 400電話辦理哪家性價(jià)比高 地圖標(biāo)注專業(yè)團(tuán)隊(duì) 代理接電話機(jī)器人如何取消 地圖定位圖標(biāo)標(biāo)注 天心智能電銷機(jī)器人 濮陽(yáng)外呼電銷系統(tǒng)怎么樣 地圖標(biāo)注的公司有哪些

什么是SQL注入?

我理解的sql注入就是一些人可以通過(guò)惡意的參數(shù)輸入,讓后臺(tái)執(zhí)行這段SQL,然后達(dá)到獲取數(shù)據(jù)或者破壞數(shù)據(jù)庫(kù)的目的!
舉個(gè)簡(jiǎn)單的查詢例子,后臺(tái)sql是拼接的:select * from Test where name='+參數(shù)傳遞+';前臺(tái)頁(yè)面要求輸入name,那么黑客可以輸入: ';DROP TABLE Test;--   不要小瞧這一段SQL代碼:
select * from Test where name=' ';DROP TABLE Test;--';在SQL中是正確的,可執(zhí)行的,但是執(zhí)行后整個(gè)Test表都刪除了,網(wǎng)站崩潰!

最好的解決方法

最好的辦法就是不寫拼接SQL,改用參數(shù)化SQL,推薦新項(xiàng)目使用。這里不做介紹,感興趣的朋友可以自行搜索一下,本文介紹的方法適合老項(xiàng)目,就是沒(méi)有使用參數(shù)化SQL開(kāi)發(fā)的程序。

使用過(guò)濾函數(shù)來(lái)過(guò)濾

將SQL一些危險(xiǎn)的關(guān)鍵字,還有注釋百分號(hào)以及分號(hào)這些根本在我們正常寫代碼的時(shí)候根本不會(huì)出現(xiàn)的字符都過(guò)濾掉,這樣能最大限度的保證SQL執(zhí)行是安全的,代碼如下:

public class SqlFilter
{
  public static void Filter()
  {
    string fileter_sql = "execute,exec,select,insert,update,delete,create,drop,alter,exists,table,sysobjects,truncate,union,and,order,xor,or,mid,cast,where,asc,desc,xp_cmdshell,join,declare,nvarchar,varchar,char,sp_oacreate,wscript.shell,xp_regwrite,',%,;,--";
    try
    {
      // -----------------------防 Post 注入-----------------------
      if (HttpContext.Current.Request.Form != null)
      {
        PropertyInfo isreadonly = typeof(System.Collections.Specialized.NameValueCollection).GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);
        //把 Form 屬性改為可讀寫
        isreadonly.SetValue(HttpContext.Current.Request.Form, false, null);

        for (int k = 0; k  System.Web.HttpContext.Current.Request.Form.Count; k++)
        {
          string getsqlkey = HttpContext.Current.Request.Form.Keys[k];
          string sqlstr = HttpContext.Current.Request.Form[getsqlkey];
          string[] replace_sqls = fileter_sql.Split(',');
          foreach (string replace_sql in replace_sqls)
          {
            sqlstr = Regex.Replace(sqlstr, replace_sql, "", RegexOptions.IgnoreCase);
          }
          HttpContext.Current.Request.Form[getsqlkey] = sqlstr;
        }
      }


      // -----------------------防 GET 注入-----------------------
      if (HttpContext.Current.Request.QueryString != null)
      {
        PropertyInfo isreadonly = typeof(System.Collections.Specialized.NameValueCollection).GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);
        //把 QueryString 屬性改為可讀寫
        isreadonly.SetValue(HttpContext.Current.Request.QueryString, false, null);

        for (int k = 0; k  System.Web.HttpContext.Current.Request.QueryString.Count; k++)
        {
          string getsqlkey = HttpContext.Current.Request.QueryString.Keys[k];
          string sqlstr = HttpContext.Current.Request.QueryString[getsqlkey];
          string[] replace_sqls = fileter_sql.Split(',');
          foreach (string replace_sql in replace_sqls)
          {
            sqlstr = Regex.Replace(sqlstr, replace_sql, "", RegexOptions.IgnoreCase);
          }
          HttpContext.Current.Request.QueryString[getsqlkey] = sqlstr;
        }
      }


      // -----------------------防 Cookies 注入-----------------------
      if (HttpContext.Current.Request.Cookies != null)
      {
        PropertyInfo isreadonly = typeof(System.Collections.Specialized.NameValueCollection).GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);
        //把 Cookies 屬性改為可讀寫
        isreadonly.SetValue(HttpContext.Current.Request.Cookies, false, null);

        for (int k = 0; k  System.Web.HttpContext.Current.Request.Cookies.Count; k++)
        {
          string getsqlkey = HttpContext.Current.Request.Cookies.Keys[k];
          string sqlstr = HttpContext.Current.Request.Cookies[getsqlkey].Value;
          string[] replace_sqls = fileter_sql.Split(',');
          foreach (string replace_sql in replace_sqls)
          {
            sqlstr = Regex.Replace(sqlstr, replace_sql, "", RegexOptions.IgnoreCase);
          }
          HttpContext.Current.Request.Cookies[getsqlkey].Value = sqlstr;
        }
      }
    }
    catch (Exception ex)
    {
      Console.WriteLine(ex.Message);
    }

  }

}
您可能感興趣的文章:
  • c#.net全站防止SQL注入類的代碼
  • asp.net 防止SQL注入攻擊
  • asp.net利用HttpModule實(shí)現(xiàn)防sql注入
  • asp.net(C#)防sql注入組件的實(shí)現(xiàn)代碼
  • asp.net下檢測(cè)SQL注入式攻擊代碼
  • asp.net 預(yù)防SQL注入攻擊之我見(jiàn)
  • ASP.NET防范SQL注入式攻擊的方法
  • ASP.NET防止SQL注入的方法示例
  • 深入淺析.NET應(yīng)用程序SQL注入
  • .Net防sql注入的幾種方法

標(biāo)簽:麗江 宜春 吉林 汕頭 婁底 本溪 河南 重慶

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ASP.NET過(guò)濾類SqlFilter,防止SQL注入 原創(chuàng)》,本文關(guān)鍵詞  ASP.NET,過(guò)濾,類,SqlFilter,防止,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ASP.NET過(guò)濾類SqlFilter,防止SQL注入 原創(chuàng)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于ASP.NET過(guò)濾類SqlFilter,防止SQL注入 原創(chuàng)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: ass极品少妇pics小iis| 免费色播| 美女呦女closeuppics| 深夜福利免费观看| 杂伦大乱烩H高小说| 无码国产69精品久久久久网站| 操一操日一日| 中国幻女free性zozo交体内谢| 白洁公交车被挺进体内H| 缅甸AV视频一区二区| japanese熟睡侵犯| 一二三年级的清明节图画| 美女隐私打扑克视频软件| 久久国产精品只做精品| yy6080青苹果高清影院| 120秒免费啪啪试看网站| 国产一级高清AAAA大片夜爱| 美女解开胸罩喂男人吃奶| 一级做a爰毛片| 国产麻豆精品XXXHD| 精品国产一区二区三区麻豆免费观看完整版| 少妇婬伦短篇小说全集| 成人久久电影| 美女裸奶| 纯肉污各种姿势高H细文男男| 男人撕开奶罩揉吮奶头gif| 女警花王诗涵被躁120分钟视频| 美国情欲大尺度电影| 完整版白妇少洁| 高h办公室肉辣秘书| 亚洲精品一区二区黄美女和男| 久久精品久久噜男人的天堂 | 欧美三级又粗又硬| 黄色小说细节描写| av日本精品一区二区免费| 成人欧美在线视频| 男生穿透明内裤见j洗澡图| 福利92| 成本人片在线观看三三网站 | 美女视频黄频大全免费的国内| 赵小米kitty裸19分钟视频|