周光軍 蔡成軍 祖卓紅 楊帆 劉建 李穎
摘 要 隨著網(wǎng)絡(luò)應(yīng)用的普及與推廣,越來越多的網(wǎng)絡(luò)門戶平地而起,在各類門戶如此普及的現(xiàn)今社會(huì),門戶應(yīng)用層的安全問題被提升到了一個(gè)很高的關(guān)注層面,主要表現(xiàn)在數(shù)據(jù)庫的防注入、門戶站點(diǎn)頁面防篡改、防注冊(cè)機(jī)等類型的安全防護(hù),本文將在上述幾種安全問題中結(jié)合實(shí)際應(yīng)用做出相應(yīng)解決方案。
【關(guān)鍵詞】門戶 安全 注入sqlserver .net
無論何種技術(shù)的網(wǎng)絡(luò)平臺(tái),在internet環(huán)境中發(fā)布后均會(huì)面臨各類攻擊,特別是基于網(wǎng)頁篡改和數(shù)據(jù)庫的注入攻擊,多數(shù)靜態(tài)網(wǎng)頁面臨的攻擊為頁面篡改、站點(diǎn)文件刪除的攻擊,而各類數(shù)據(jù)庫站點(diǎn)的攻擊則重點(diǎn)體現(xiàn)在數(shù)據(jù)庫的注入攻擊方面,本文將結(jié)合實(shí)際開發(fā)過程中遇到的各類典型注入攻擊,在缺乏硬件設(shè)備保護(hù)的前提下,基于.net技術(shù),在非托管環(huán)境中所做出的技術(shù)解決方案進(jìn)行闡述。
1 注入攻擊渠道及原理分析
基于B/S結(jié)構(gòu)的網(wǎng)絡(luò)應(yīng)用門戶,http請(qǐng)求訪問方式多數(shù)為get、post兩種方式,程序中一般在cookie、form、request等請(qǐng)求中體現(xiàn),攻擊原理即是利用客戶端與服務(wù)器商的請(qǐng)求進(jìn)行的數(shù)據(jù)交互的功能發(fā)出含有如add、update、exec、drop、alter、exists、union、execute、xp_cmdshell、insert、sp_oacreate等功能性代碼的請(qǐng)求,如果一個(gè)網(wǎng)絡(luò)門戶在應(yīng)用層及數(shù)據(jù)庫層的安全防護(hù)功能不夠完善,則會(huì)被輕易地將一些與自己門戶無關(guān)的數(shù)據(jù)被迫允許性地存儲(chǔ)到服務(wù)器數(shù)據(jù)庫中,嚴(yán)重者會(huì)丟失非常重要的賬戶信息造成龐大的經(jīng)濟(jì)損失。
2 注入攻擊手段及目的
結(jié)合本部門近十年的網(wǎng)絡(luò)平臺(tái)運(yùn)維經(jīng)驗(yàn),注入攻擊手段上基本全是利用注入攻擊軟件不停地對(duì)網(wǎng)絡(luò)門戶進(jìn)行漏洞掃描,然后利用漏洞進(jìn)行非法指令請(qǐng)求進(jìn)行注入攻擊。
攻擊目的多以謀取商業(yè)利益為主,主要是為了廣泛的發(fā)布企業(yè)的信息,擴(kuò)大企業(yè)相關(guān)信息在Internet中的發(fā)布量,提升客戶通過各大搜索引擎搜索的命中率,或者非法獲取相關(guān)的用戶賬號(hào)信息,進(jìn)行非法交易以謀取商業(yè)利益。
3 注入攻擊的危害
由于我部門運(yùn)維的網(wǎng)絡(luò)門戶為交互性門戶(非電子商務(wù)門戶,無在線支付交易功能),綜合與注入攻擊多年來的對(duì)抗反擊,總結(jié)出如下幾種危害:
3.1 損耗硬件設(shè)備資源
每遇到注入攻擊時(shí),服務(wù)器硬件資源損耗非常巨大,CPU使用率往往達(dá)到100%,內(nèi)存使用率也非常高,經(jīng)常導(dǎo)致不停止站點(diǎn)運(yùn)行就無法操作服務(wù)器的狀況。
3.2 信息資源損失
注入攻擊除添加新的數(shù)據(jù)記錄外,批量將現(xiàn)有數(shù)據(jù)字段內(nèi)容Update為非法注入內(nèi)容或非法腳本。導(dǎo)致原有數(shù)據(jù)未及時(shí)備份的情況下?lián)p失很多歷史數(shù)據(jù)。
3.3 人力物力及經(jīng)濟(jì)損失
由于我部門網(wǎng)絡(luò)平臺(tái)為會(huì)員制交互門戶,涉及到一些會(huì)員服務(wù)資費(fèi)問題,注入攻擊經(jīng)常會(huì)丟失重要數(shù)據(jù),導(dǎo)致售后人員及技術(shù)人員投入精力進(jìn)行數(shù)據(jù)恢復(fù)處理及網(wǎng)絡(luò)門戶修復(fù)處理,浪費(fèi)的時(shí)間和精力成本所帶來的經(jīng)濟(jì)損失無法估量。
4 .Net防注入技術(shù)優(yōu)勢(shì)
ASP.Net的Application_BeginRequest對(duì)預(yù)防注入功能作用非常大。在收到Request時(shí)第一個(gè)觸發(fā)的事件,這個(gè)方法第一個(gè)執(zhí)行,即,可以簡(jiǎn)單理解為:當(dāng)客戶端向服務(wù)器發(fā)現(xiàn)任何一個(gè)請(qǐng)求時(shí),首先觸發(fā)服務(wù)器端的“Application_BeginRequest”事件?;贏pplication_BeginRequest事件的優(yōu)勢(shì),解決方案如下文所述。
5 面對(duì)攻擊的解決方案
5.1 頁面篡改預(yù)防
由于是非托管環(huán)境,我部門擁有自己的web服務(wù)器,在預(yù)防網(wǎng)頁被篡改方面,主要采取權(quán)限控制來實(shí)現(xiàn),即通過IIS相應(yīng)站點(diǎn)的“權(quán)限”打開安全設(shè)計(jì)窗口,對(duì)”everyone”與”Internet來賓賬戶”進(jìn)行只讀權(quán)限配置。
5.2 數(shù)據(jù)庫層解決方案
多年來綜合分析數(shù)據(jù)庫被注入基本是為了實(shí)現(xiàn)一個(gè)目的:注入可通過瀏覽頁面打開對(duì)方網(wǎng)站的代碼,即,當(dāng)用戶訪問瀏覽我部門運(yùn)維門戶時(shí),頁面內(nèi)容可直接嵌入或跳轉(zhuǎn)到指定網(wǎng)站。經(jīng)分析有如下關(guān)鍵詞的注入內(nèi)容“