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