【ASP.NET】——SQL注入

來源:互聯網
上載者:User

標籤:sql   安全性漏洞   資料庫   sql注入   駭客   


    關於SQL注入,師父給驗收項目的時候就提過。但一直也沒深入去想是怎麼回事~~在學ASP.NET,做新聞發布系統的時候,又遇到了,這次不能放過了~~


定義

    所謂SQL注入,就是通過把SQL命令插入到Web表單提交或輸入欄位名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令。具體來說,它是利用現有應用程式,將(惡意)的SQL命令注入到後台資料庫引擎執行的能力,它可以通過在Web表單中輸入(惡意)SQL語句得到一個存在安全性漏洞的網站上的資料庫,而不是按照設計者意圖去執行SQL語句。[1] 比如先前的很多影視網站泄露VIP會員密碼大多就是通過WEB表單遞交查詢字元暴出的,這類表單特別容易受到SQL注入式攻擊.——百度百科


實驗

    系統中增加新聞類別SQL語句:

insert intocategoryinfo(name)values (‘" + caName + "‘)

    當我們在介面輸入:娛樂八卦,點擊增加新聞類別時


    娛樂八卦將替換" + caName + "而執行。

    於是,當我們在文字框中輸入:

    娛樂新聞‘)delete categoryinfo where id=13--

    這段替換了" + caName + "會形成:

      insert into categoryinfo(name)values (‘娛樂新聞‘)delete categoryinfo where id=4--‘)";

    相當於:

    insert into categoryinfo(name)values (‘娛樂新聞‘);

    delete categoryinfo where id=4--‘)";

    於是執行後前後對比效果為:

前:                            後:

    


    這就是SQL注入的一種效果。通過這種方法,將我們的資料庫進行了破壞。通過SQL注入,是駭客得到資料庫內部資訊的一種方法,為了咱們系統的安全性,我們需要做好防護。

如何避免:    對於上面的這種SQL注入,有效方法就是:用傳參進行SQL語句,不用拼接字串。
傳字串語句:
 public int test()        {            int res;            using (cmd = new SqlCommand("insert into categoryinfo(name)values (@caName)",GetConn()))            {                cmd.Parameters .Add(new SqlParameter ("@caName","SQL注入成功"));                res = cmd.ExecuteNonQuery();            }            return res;        }

改為傳參:
 public int test()        {            int res;            using (cmd = new SqlCommand("insert into categoryinfo(name)values (@caName)",GetConn()))            {                cmd.Parameters.Add(new SqlParameter("@caName", "'娛樂新聞')delete categoryinfo where id=4--"));//SQL注入失敗                res = cmd.ExecuteNonQuery();            }            return res;        }

    這隻是一種避免方法。
    那平時我們需要做哪些防護呢:
    1.限制使用者非正確格式輸入。
    2.對特殊字元進行轉換。即“’”在SQL語句運行時,已不再是“‘”,可能是一個數字,這樣就不會再對SQL語句造成混亂。
    3.報錯時,儘可能減少資訊量。最好將錯誤資訊進行封裝。因為專業人可以根據報的黃頁分析出庫裡有哪些表等資訊......
    4.將重要訊息進行加密。以免輕易泄露。
    5.不用拼接字串...    ......

    這是我所能想到的一些特別基礎的預防方法~肯定還有更進階的手段。這還需要我們繼續探索!    




【ASP.NET】——SQL注入

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.