網絡技術是從1990年代中期發展起來的新技術,它把互聯網上分散的資源融為有機整體,實現資源的全面共享和有機協作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計算機、存儲資源、數據資源、信息資源、知識資源、專家資源、大型數據庫、網絡、傳感器等。 當前的互聯網只限于信息共享,網絡則被認為是互聯網發展的第三階段。 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 發送的詳細錯誤信息,而改用自定義的出錯頁面。(關于創建自定義的出錯頁面的更多信息,請務必參閱 《Creating Custom ASP Error Pages》。) 最后,為了減輕SQL 指令植入式攻擊的危害,請限制 Web 應用程序所用的數據庫訪問帳號權限。一般來說,應用程序沒有必要以 dbo 或者 sa 的身份訪問數據庫。記住,給它的權限越少,你的網站越安全!你還可以考慮分別給每個需要訪問數據庫的對象分配只擁有必需權限的帳號,以分散安全漏洞。例如:同是前端用戶界面,當用于公共場所時就比用于具有本地內容管理機制的平臺時更加需要嚴格限制數據庫訪問權限。 網絡的神奇作用吸引著越來越多的用戶加入其中,正因如此,網絡的承受能力也面臨著越來越嚴峻的考驗―從硬件上、軟件上、所用標準上......,各項技術都需要適時應勢,對應發展,這正是網絡迅速走向進步的催化劑。 |
溫馨提示:喜歡本站的話,請收藏一下本站!