none
SQL Injection(資料隱碼)的源由與防範之道 RRS feed

  • 一般討論

  • SQL Injection的源由:
    SQL 資料隱碼攻擊是指將惡意程式碼插入字串中,然後將這些字串傳遞至 SQL Server 的執行個體進行剖析和執行。應該檢閱建構 SQL 陳述式之任何程序的資料隱碼弱點,因為 SQL Server 會執行所接收之所有語法有效的查詢。即使是參數化資料也可能被技術純熟又執意操作的攻擊者操縱。

     

    SQL Injection回應的解決方案:

    一旦web伺服器遭到SQL注入攻擊,請遵循如下步驟:

    1、關閉網站。

    2、檢查IIS日誌,查找引起這次攻擊的有漏洞的目標網頁。

    3、聯繫web開發者,修改並加強ASP頁面。

    注意 這只是一種變通的解決方法,只能臨時解決SQL Injection問題。該網站可能在伺服器再次連上網路後再次被攻擊。為了徹底解決這個問題,請參閱預防SQL Injection攻擊的解決方案

     

    預防SQL Injection攻擊的解決方案:

    這種SQL Injection攻擊是由ASP網頁不符合安全編碼的要求所引起的。為了防止攻擊,我們需要驗證所有網頁的字串輸入的函數。比如說,帶有用戶名和密碼輸入框的網站登錄頁。

     

    我們也可以在微軟的官方網站上找到安全指導和最佳實踐的文件,來應對SQL注入攻擊。

    『資料隱碼』SQL Injection的源由與防範之道

    http://www.microsoft.com/taiwan/sql/SQL_Injection.htm

     

    Best practices guidelines that developers may follow to mitigate SQL injection

    http://msdn2.microsoft.com/en-us/magazine/cc163917.aspx

     

    How To - Protect from Injection Attacks in ASP.NET

    http://msdn.microsoft.com/en-us/library/bb355989.aspx

     

     

    -------------------------------------------

    林金花

    微軟技術支援中心

     

    2008年5月23日 上午 03:11

所有回覆

  • 最近一波SQL Injection攻擊潮的規模比想像中大,同時也突顯了現存網站的SQL Injection漏洞何其多。

    野人獻曝,貢獻個人一些經驗給大家參考:

    2008年5月25日 下午 04:40
  • http://zh.wikipedia.org/wiki/SQL%E8%B3%87%E6%96%99%E9%9A%B1%E7%A2%BC%E6%94%BB%E6%93%8A

     

    只要在組SQL字串時

    把要代入的參數裡的單引號字元

    取代為連續2個單引號字元

    幾乎可以防堵所有的SQL資料隱碼

     

    例如:

     

    Code Snippet

    public class SafeSQL
    {
     public static string Quote(string strData)
     {
      return string.Format("'{0}'", strData.Replace("'", "''"));
     }

     public static string QuoteLike(string strData)
     {
      return string.Format("'%{0}%'", strData.Replace("'", "''"));
     }
     
     public static string NoQuote(string strData)
     {
      return strData.Replace("'", "''");
     }

    }

     

     

    但如果是類似留言版或討論區的話

    請務必再做 HTML 與 JavaScript 或 VBScript的語法過濾

    以避免被惡意植入

    跨網站攻擊

    http://zh.wikipedia.org/wiki/XSS

    2008年5月29日 上午 02:15