張正東
由于B/S架構的兼容性和開放性,以及Web訪問對用戶端的低成本需求,Web應用系統(tǒng)被大量部署和采用,因此,Web應用系統(tǒng)安全隱患的識別、檢測與防范十分重要,需要從技術層面進行分析,并結合運維實踐,提出安全技術措施。
一、Web訪問機理概述
Web在網(wǎng)頁設計中稱為網(wǎng)頁,表現(xiàn)為三種形式,即超文本(Hypertext)、超媒體(Hypermedia)、超文本傳輸協(xié)議(HTTP)等。用戶的Web訪問具有不確定性,其瀏覽順序和內容完全由用戶自己決定,用戶通過填寫FORM向服務器提交獲得動態(tài)信息的請求、服務器根據(jù)用戶請求返回結果信息。
用戶在瀏覽器上輸入URL(Uniform Resource Locator統(tǒng)一資源定位符),域名系統(tǒng)進行解析后確定IP地址,向在IP地址映射的服務器發(fā)送一個HTTP請求。在通常情況下HTML文本、圖片和該網(wǎng)頁的一切其他文件會被逐一推送回用戶端,瀏覽器生成用戶所看到的“網(wǎng)頁”。
由于B/S架構和Web訪問對用戶端的配置需求和維護成本極低,越來越多的應用系統(tǒng)采用此種方式進行部署,成為Web應用系統(tǒng)。
二、Web應用系統(tǒng)面臨安全威脅
Web應用系統(tǒng)面臨的安全威脅主要表現(xiàn)在非授權訪問、偽用戶登錄、破壞數(shù)據(jù)完整性等方面。它們主要利用以下途徑:應用軟件系統(tǒng)自身的漏洞、應用軟件系統(tǒng)的安全體系缺陷、合法用戶的安全意識薄弱以及安全管理制度缺失。安全威脅分為人為威脅和自然威脅,人為威脅都是有目的的惡意攻擊,人為威脅分為主動性攻擊和被動性攻擊兩大類。
(一)主動性攻擊
主動攻擊是指攻擊者未經(jīng)授權和許可,截獲或篡改系統(tǒng)管理權限、拒絕或中止某些用戶對系統(tǒng)的合法訪問行為。這方面攻擊往往是對數(shù)據(jù)通道中正在傳輸?shù)臄?shù)據(jù)單元進行更改、刪除、延遲、拷貝重發(fā)或插入、合成或偽造等各種惡意處理行為,并以更改報文流、拒絕報文服務、偽造連結初始化等形式達到攻擊目的。主動攻擊通常易于探測但卻難于防范。
(二)被動性攻擊
被動攻擊是指攻擊者通過監(jiān)聽網(wǎng)絡上傳輸?shù)男畔⒘?、截獲信息內容的行為。這類攻擊主要是為了獲得信息流長度、傳輸頻率等技術性要素,同時觀察和解析數(shù)據(jù)單元包含的信息(如用戶數(shù)據(jù)、協(xié)議控制信息),但不纂改或破壞數(shù)據(jù)單元內容。攻擊者通過這種看似“安全”行為來了解和熟悉正在進行的通信詳情,以便達到用其他方法竊取或破壞應用系統(tǒng)和數(shù)據(jù)資源的攻擊目的。因此,相對主動性攻擊而言,信息發(fā)送者和接收者發(fā)現(xiàn)被動攻擊是困難的。通常情況下,通過對用戶信息進行加密可以避免被動攻擊。
由此可見,Web應用系統(tǒng)可能受到的攻擊和攻擊形式是多種多樣的,而且往往是多種攻擊同時存在。如何有效防范非法攻擊、提高應用系統(tǒng)安全性是一項復雜的任務,需要通過多種安全服務措施和健全管理機制來實現(xiàn)。
三、如何有效地提高Web應用系統(tǒng)的安全性
為了保證應用系統(tǒng)的安全運行,保護計算機硬件、軟件和系統(tǒng)數(shù)據(jù)不被攻擊、破壞、更改或泄漏,需要從技術方面采用以下安全措施。
(一)應用防火墻技術
防火墻技術是建立在現(xiàn)代通信網(wǎng)絡技術和信息安全技術基礎上的網(wǎng)絡應用安全技術,可應用在企事業(yè)單位內部專用網(wǎng)絡,以及內部網(wǎng)絡與外部公用網(wǎng)絡互聯(lián)環(huán)境條件下,尤其是以接入Internet網(wǎng)絡使用最為廣泛。
防火墻是指設置在不同網(wǎng)絡(如可信任的企業(yè)內部網(wǎng)和不可信的外部公共網(wǎng))或網(wǎng)絡安全域之間的一系列硬件和軟件的組合,是不同網(wǎng)絡或網(wǎng)絡安全域之間信息的唯一出入口,它能根據(jù)用戶的安全政策(允許、拒絕、監(jiān)測)控制出入網(wǎng)絡的信息流,且有較強的抗攻擊能力。防火墻能夠提供信息安全服務,在邏輯上,防火墻既是一個分離器、限制器,又是一個分析器,能夠有效地監(jiān)控內部網(wǎng)和外部公用網(wǎng)絡的信息交互活動,以保證內部網(wǎng)絡的安全。
1. 企業(yè)網(wǎng)絡級防火墻,用來防止整個內部安全網(wǎng)絡檢測外部的非法入侵,包括分組過濾和授權服務器。分組過濾負責檢查所有流入內部網(wǎng)絡的信息,拒絕所有不符合內部網(wǎng)絡預定安全策略的數(shù)據(jù),授權服務器則檢查系統(tǒng)用戶的登錄是否合法。
2. 企業(yè)應用級防火墻,從應用程序入手對訪問接入進行控制。通常使用應用網(wǎng)關或代理服務器來區(qū)分各種應用,如只允許某類用戶訪問外部網(wǎng)絡,但阻止FTP應用的通過。
(二)增強用戶管理的安全性
Web應用系統(tǒng)企事業(yè)單位內部多個單位及部門的用戶同時登錄和使用,因此在系統(tǒng)安全性設計上,可采用角色管理和用戶身份驗證的安全策略。
1. 角色管理
角色管理將應用系統(tǒng)中不同模塊權限和對象權限建立映射關系而形成集合,即角色。通過對系統(tǒng)功能模塊的劃分,不同角色對不同模塊具有不同的訪問控制權限,從而限制了無關用戶對特定功能模塊的訪問。
2. 系統(tǒng)用戶身份驗證
身份驗證技術通過登錄用戶向應用系統(tǒng)出示自己身份證明、系統(tǒng)核查用戶身份證明的有效性來判斷和確認通信雙方的真實有效身份。應用系統(tǒng)依靠Internet信息服務(IIS)的身份驗證技術和Windows NT文件系統(tǒng)的訪問控制。訪問請求通過網(wǎng)絡客戶進入IIS,IIS可以選擇使用基本的、簡要的或集成的Windows 身份驗證技術對客戶進行身份驗證。如果驗證通過。那么IIS將根據(jù)驗證后的結構生成新的對ASP.NET程序的訪問,從而簡化了系統(tǒng)設計中安全驗證的工作量。如圖1。
(三)增強ASP.NET程序的安全性
Web應用系統(tǒng)在程序設計過程中,采取以下措施來提高安全性。
1. 防止SQL注入攻擊。在編寫代碼時,要禁止用戶輸入非法、危險和內定義的字符,如單引號(或)、or、and、*、<、>、空格等,同時在客戶端和服務器端都要對用戶輸入的信息進行驗證;同時,在編寫程序中要盡量使用存儲過程技術。使用存儲過程不僅可以防止某些類型的SQL注入式攻擊,還可以提高SQL語句的執(zhí)行速度;在程序出現(xiàn)異常時,程序會自動跳轉到固定頁面,而不是將錯誤信息顯示給用戶,防止代碼被截獲。
2. 為了有效管控對業(yè)務數(shù)據(jù)的訪問授權,防止用戶冒名登錄、或者直接在瀏覽器地址欄中輸入鏈接地址、從而進入某個超出用戶權限的頁面,可為Session設置有效期。當Session值過期時,該登錄賬號失去了再次使用系統(tǒng)的權利,必須重新登錄系統(tǒng),這樣可以防止用戶離開計算機時被冒名使用。如圖2。
3. Web應用系統(tǒng)一般具有附件上傳和導出下載功能。在附件上傳時,為了防止惡意上傳破壞系統(tǒng),需要在上傳時對文件類型進行判斷和驗證。除特定文件類型外,其他類型的文件一律禁止上傳,尤其是后綴為asp、aspx及exe的文件。
(四)在數(shù)據(jù)庫管理中應用數(shù)據(jù)加密技術
由于應用系統(tǒng)的關鍵信息和數(shù)據(jù)都存儲在數(shù)據(jù)庫中,因此,數(shù)據(jù)庫加密是Web應用系統(tǒng)安全的重要環(huán)節(jié)。數(shù)據(jù)加密技術是把重要應用數(shù)據(jù)經(jīng)過特定算法加密后、再進行傳送;加密后的數(shù)據(jù)信息不易被非法入侵者閱讀或理解,到達目的地后再進行解密還原。根據(jù)加密密鑰和解密密鑰在性質上的不同,ASP.NET應用中提供了兩種加密算法,即對稱加密算法和非對稱加密算法。
1. 對稱加密是加密和解密使用相同密鑰的加密算法。它的優(yōu)點是保密程度較高、運算負載小、處理速度快、使用方便快捷、密鑰短且破譯困難。由于持有密鑰的雙方都可以使用該密鑰解密數(shù)據(jù),因此必須保證密鑰不被未經(jīng)授權的非法用戶得到。在對稱加密算法中廣泛使用的是DES加密算法。
2. 非對稱加密是加密和解密使用不同密鑰的加密算法。它使用了一對密鑰,一個用于加密信息、另一個用于解密信息。通信雙方無需事先交換密鑰就可以進行保密通信。但是加密密鑰不同于解密密鑰,加密密鑰是公開的,任何人都可以使用;而解密密鑰只有解密方 掌握。兩個密鑰之間存在著相互依存關系:即用其中任一個密鑰加密的信息只能用另一密鑰進行解密,它只可加密少量數(shù)據(jù)。在非對稱加密算法中普遍使用的是RSA加密算法。
在實際應用中,可采用RSA與DES混合加密體制的方式進行數(shù)據(jù)信息加密。可以用對稱加密算法(DES加密算法)加密較長的明文,用非對稱加密算法(RSA加密算法)加密數(shù)字簽名等較短的數(shù)據(jù),這樣既保證了數(shù)據(jù)的保密強度,又加快了系統(tǒng)運算速度。
四、完善數(shù)據(jù)安全備份策略
Web應用系統(tǒng)的關系數(shù)據(jù)庫管理系統(tǒng),一般均具備數(shù)據(jù)備份功能。數(shù)據(jù)備份方式有完全備份、差異備份以及增量備份三種。
(一)完全備份(Full Backup)
完全備份是指對某一個時間點上所有數(shù)據(jù)或應用進行一個完全拷貝。實際應用中就是用一盤磁帶對整個系統(tǒng)進行完全備份,包括其中的系統(tǒng)和所有數(shù)據(jù),完全備份會清除 文件屬性。完全備份的優(yōu)點是大大節(jié)省系統(tǒng)或數(shù)據(jù)恢復的時間。缺點是,各個全備份磁帶中的備份數(shù)據(jù)存在大量的重復信息;由于每次需要備份的數(shù)據(jù)量較大,因此備份所需時間較長。
(二)增量備份(Incremental Backup)
增量備份是指在一次全備份或上一次增量備份后,以后每次的備份只需備份與前一次相比增加和者被修改的文件。增量備份只備份有標記的選中的文件和文件夾,它清除標記,既:備份后標記文件,換言之,清除存檔屬性。
增量備份的優(yōu)點就是沒有重復的備份數(shù)據(jù),因此備份數(shù)據(jù)量不大、備份所需的時間很短。缺點是對備份磁帶連續(xù)性要求較高導致的可靠性降低,如果環(huán)節(jié)中間有一個磁帶出現(xiàn)故障,整個數(shù)據(jù)恢復將失敗、風險較大;其次是恢復過程必須沿著從全備份到依次增量備份的時間順序倒序恢復,因此恢復時間較長。
(三)差異備份(Differential Backup)
差異備份是指在一次完全備份后至本次備份的時間段內,對增加或者修改文件進行備份。差異備份只備份有選中標記的文件和文件夾,不清除標記,即在備份后對已備份文件不做標記。換言之,不清除存檔屬性。在數(shù)據(jù)恢復時,只需對第一次全備份和最后一次差異備份進行恢復。
差異備份在避免了其它兩種備份策略缺點的同時,兼顧了它們各自的優(yōu)點。首先,它具有了增量備份需要時間短、節(jié)省磁盤空間的優(yōu)勢;其次,它又具有了全備份恢復所需磁帶少、恢復時間短的特點。系統(tǒng)運維人員只需要兩盤磁帶,即全備份磁帶與災難發(fā)生前一天的差異備份磁帶,就可以將數(shù)據(jù)恢復。
在數(shù)據(jù)庫運維實踐中,無論采用何種備份方式,運維人員都要嚴格執(zhí)行技術規(guī)范和管理制度,首先在操作過程中對備份時間、備份對象、備份策略做好手工記錄,其次在備份介質的標簽上記錄備份時間和備份編號,第三要把備份介質異地、安全保管,預防系統(tǒng)硬件和備份介質同時遭遇水、火、盜竊、電磁等災難性事故。
Web應用系統(tǒng)的安全管理,要結合系統(tǒng)運行的具體環(huán)境和條件,從網(wǎng)絡環(huán)境、用戶管理、程序設計開發(fā)、數(shù)據(jù)加密和數(shù)據(jù)備份等方面對可能存在的安全威脅進行分析,制定有效可行的安全防護技術措施,最大限度地保障和管控系統(tǒng)安全,有效控制安全風險。