發佈時間:2008.04.25 04:53     來源:賽迪網    作者:Chad

SQL指令植入式攻擊的危害

SQL 指令植入式攻擊可能引起的危害取決於該網站的軟件環境和配置。當 Web 服務器以操作員(dbo)的身份訪問數據庫時,利用SQL 指令植入式攻擊就可能刪除所有表格、創建新表格,等等。當服務器以超級用戶 (sa) 的身份訪問數據庫時,利用SQL 指令植入式攻擊就可能控制整個SQL服務器;在某些配置下攻擊者甚至可以自行創建用戶帳號以完全操縱數據庫所在的Windows 服務器。

SQL指令植入式攻擊

杜絕SQL 指令植入式攻擊的第一步就是採用各種安全手段監控來自 ASP request 對象 (Request 、 Request.QueryString 、 Request.Form 、 Request.Cookies 和 Request.ServerVariables) 的用戶輸入,以確保 SQL 指令的可靠性。具體的安全手段根據你的 DBMS 而異,下面給出的都是基於 MS SQL Server的例子。

在前述登錄頁面的例子中,腳本期望得到的兩個輸入變量 (txtUserName 和 txtPassword)均為字符串類型。無論用戶在哪個參數中插入單引號,他都可能讓數據庫執行單引號中的 SQL 指令。為了杜絕此類SQL 指令植入式攻擊,我們可以借助 Replace 函數剔除單引號,比如:

代碼:p_strUsername = Replace(Request.Form("txtUsername"), "", "") 

p_strPassword = Replace(Request.Form("txtPassword"), "", "")

在第二個例子中,腳本期望的輸入變量是長整型變量 (ID) 。用戶可以通過在 ID 參數中插入特殊字符來運行不安全的 SQL 指令。為了為了杜絕此類SQL 指令植入式攻擊,我們只需要借助 CLng 函數限制 ID 值為長整型變量,比如: 代碼:p_lngID = CLng(Request("ID"))

當用戶試圖在 ID 中包含特殊字符時,CLng 就會產生一個錯誤。

為了進一步減少SQL 指令植入式攻擊的危脅,請務必清除客戶端錯誤信息文本中的所有技術資料。某些錯誤信息往往洩露了技術細節,從而讓攻擊者可以看出服務器的安全漏洞所在。這 裡指的錯誤信息不但包括應用程序生成的消息框,還包括來自 IIS 的出錯提示。為此,你可以禁止由 IIS 發送的詳細錯誤信息,而改用自定義的出錯頁面。

最後,為了減輕SQL 指令植入式攻擊的危害,請限制 Web 應用程序所用的數據庫訪問帳號權限。一般來說,應用程序沒有必要以 dbo 或者 sa 的身份訪問數據庫。記住,給它的權限越少,你的網站越安全!你還可以考慮分別給每個需要訪問數據庫的對象分配只擁有必需權限的帳號,以分散安全漏洞。例 如:同是前端用戶界面,當用於公共場所時就比用於具有本地內容管理機制的平台時更加需要嚴格限制數據庫訪問權限。 (責任編輯:盧兆林)


資料來源 http://database.ccidnet.com/art/1105/20080424/1431175_3.html


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 ivan0914 的頭像
    ivan0914

    I'n Blog 之萬象真藏

    ivan0914 發表在 痞客邦 留言(0) 人氣()