王曉哲
(天津機(jī)電職業(yè)技術(shù)學(xué)院,天津 300131)
NTFS權(quán)限有別于以前的sys32權(quán)限。它比sys32權(quán)限更嚴(yán)格,配置更詳細(xì)。你可以對(duì)單獨(dú)的文件和目錄使用NTFS訪問(wèn)權(quán)限。這樣我們就可以對(duì)asp所在目錄以及里面的文件加以保護(hù)。NTFS權(quán)限是www服務(wù)器安全性的基礎(chǔ),它是基于網(wǎng)絡(luò)系統(tǒng)的。以前的sys32權(quán)限是基于單機(jī)文件系統(tǒng)。NTFS權(quán)限定義了一個(gè)或一個(gè)用戶組訪問(wèn)文件系統(tǒng)和目錄的不同級(jí)別。當(dāng)一個(gè)擁有web服務(wù)器有效帳號(hào)用戶訪問(wèn)一個(gè)有權(quán)限限制的文件時(shí),計(jì)算機(jī)首先檢索文件的訪問(wèn)控制列表 。該列表聲明了不同用戶和用戶組所被受予的權(quán)限和訪問(wèn)級(jí)別。如果該用戶具有打開(kāi)文件的權(quán)限,那么計(jì)算機(jī)就允許該用戶訪問(wèn)文件,但其他操作是不允許的,例如修改。
Global.a(chǎn)sa文件是asp網(wǎng)站運(yùn)行就立即啟動(dòng)的全局文件。為了充分保護(hù)ASP應(yīng)用程序,要把應(yīng)用程序里面的Global.a(chǎn)sa文件上為適當(dāng)?shù)挠脩艋蚪M設(shè)置NTFS文件權(quán)限,因?yàn)檎麄€(gè)網(wǎng)站的配置全在此,所以非常重要。如果Global.a(chǎn)sa里面有向?yàn)g覽器返回信息的命令而你沒(méi)有保護(hù),則信息將有可能被重定向返回給任意主機(jī),即便此應(yīng)用程序的其他文件被保護(hù),這種問(wèn)題也會(huì)發(fā)生。這就是我們經(jīng)常所說(shuō)的重定向安全。所以一定要對(duì)應(yīng)用程序里面的所有文件實(shí)行統(tǒng)一的NTFS權(quán)限控制。
就目前的操作系統(tǒng)而言,他們的web服務(wù)器提供了非常全面的安全性配置??梢酝ㄟ^(guò)配置Web服務(wù)器的權(quán)限來(lái)限制用戶查看、運(yùn)行和操作的ASP文件。他的權(quán)限配置不同于NTFS權(quán)限提供的對(duì)特定用戶對(duì)應(yīng)用程序文件和目錄的訪問(wèn)方式,Web服務(wù)器權(quán)限對(duì)所有用戶有效,并且不區(qū)分用戶級(jí)別和類(lèi)型。在這一點(diǎn)上,他們的角度是不一樣的。對(duì)于要運(yùn)行ASP應(yīng)用程序的用戶,在配置Web服務(wù)器權(quán)限時(shí),要遵循下列原則:對(duì)包含asp文件的虛擬目錄不允許“讀”或“腳本運(yùn)行”權(quán)限;對(duì)asp文件和其他包含腳本的文件所在的虛目錄不允許“讀”或“腳本運(yùn)行”權(quán)限。
應(yīng)用程序的腳本映射文件保證了用戶在瀏覽網(wǎng)頁(yè)時(shí)不會(huì)意外地下載asp文件的源代碼。例如,即使你為含有某個(gè)asp文件的目錄設(shè)置了“讀”權(quán)限,只要該asp文件映射于某個(gè)腳本的應(yīng)用程序,那么你的Web服務(wù)器也不會(huì)將該文件的源代碼返回給用戶,瀏覽器只會(huì)報(bào)404錯(cuò)誤(文件無(wú)法找到)。
Cookie是一種存放于你的本地機(jī)中含有上網(wǎng)信息的文本文件,包括用戶名和密碼等。ASP使用SessionID(會(huì)話號(hào)碼)cookie跟蹤對(duì)應(yīng)用程序訪問(wèn)期間特定的 Web瀏覽器的信息。這就是說(shuō),帶有相同的cookie的HTTP請(qǐng)求被認(rèn)為是來(lái)自同一客戶端。Web服務(wù)器可以使用SessionID判斷某個(gè)特定用戶會(huì)話信息。
⑴SessionID能否被黑客猜中
為了防止計(jì)算機(jī)黑客猜中SessionID并獲得對(duì)合法用戶的會(huì)話變量的訪問(wèn),Web服務(wù)器為每個(gè)SessionID指派一個(gè)隨機(jī)生成號(hào)碼(此號(hào)碼算法難度并不是很強(qiáng))。每當(dāng)用戶的Web瀏覽器返回一個(gè)Session-ID時(shí),服務(wù)器取出SessionID,接著檢查是否和服務(wù)器上的生成號(hào)碼一致。若兩個(gè)id號(hào)一致,它將認(rèn)為是同一用戶,將允許當(dāng)前用戶訪問(wèn)前一用戶的所有會(huì)話變量。這一技術(shù)的安全性在于數(shù)字的長(zhǎng)度(64位),此長(zhǎng)度越長(zhǎng)那么就使計(jì)算機(jī)黑客猜中SessionID概率就越低。
⑵ 加密重要的SessionID Cookie
截獲了用戶sessionID的計(jì)算機(jī)黑客可以使用此cookie來(lái)假冒該用戶。如果ASP應(yīng)用程序包含私人信息,信用卡或銀行帳戶,因?yàn)檫@些信息在cookie文件中都可明文顯示。擁有竊取的cookie的計(jì)算機(jī)黑客就可以使用,使用戶受到極大損失。你可以通過(guò)對(duì)Web服務(wù)器和用戶的瀏覽器之間的通訊鏈路加密來(lái)防止SessionIDcookie被截獲。
用戶在瀏覽網(wǎng)頁(yè)過(guò)程中,有時(shí)會(huì)因?yàn)槟撤N情況長(zhǎng)時(shí)間離開(kāi)計(jì)算機(jī)處理別的事情,而忘記關(guān)掉網(wǎng)頁(yè)。這樣會(huì)給別人有可乘之機(jī),所以應(yīng)該給重要網(wǎng)頁(yè)一個(gè)過(guò)期時(shí)間。它不僅保證了用戶的安全,也可以減少服務(wù)器的鏈接次數(shù),減少服務(wù)器壓力??梢允褂胹ession.timeout=時(shí)間,過(guò)了一定時(shí)間網(wǎng)頁(yè)就失效了,如想使用,須再次登陸。
在Ie瀏覽器的工具選項(xiàng)中可以找到此項(xiàng)。SSL協(xié)議作為Web服務(wù)器安全選項(xiàng),提供了一種虛擬方式來(lái)建立與用戶的加密通訊連接。SSL保證了Web站點(diǎn)內(nèi)容的驗(yàn)證,并能確認(rèn)訪問(wèn)被限制的Web站點(diǎn)的用戶身份。
⑴通過(guò)SSL可以被限制的程序
通過(guò)SSL,你可以要求訪問(wèn)被限制的ASP站點(diǎn)用戶與你的服務(wù)器建立一個(gè)加密連接;以防用戶與站點(diǎn)間交換的數(shù)據(jù)被截取。
⑵維護(hù)文件的安全
如果你從沒(méi)有得到保護(hù)的虛擬目錄中的asp文件,則SSL將不被應(yīng)用于被包含文件。因此,為了保證使用SSL,應(yīng)確保包含的文件啟用了SSL。
⑶客戶資格認(rèn)證
控制對(duì)你的ASP應(yīng)用程序訪問(wèn)的一種十分安全的方法就是要求用戶使用客戶資格登錄??蛻糍Y格是包含最終用戶身份信息的數(shù)字身份證。如我們進(jìn)行買(mǎi)賣(mài)交易時(shí),需要有網(wǎng)銀。用戶通常從委托的第三方組織獲得客戶資格,第三方組織在發(fā)放資格證之前確認(rèn)用戶的身份。每當(dāng)用戶登錄到需要資格驗(yàn)證的站點(diǎn)時(shí),用戶的Web瀏覽器會(huì)先自動(dòng)向服務(wù)器發(fā)送用戶資格。如果和Web服務(wù)器資格對(duì)比正確,那么服務(wù)器就可以許可用戶對(duì)ASP應(yīng)用程序訪問(wèn)。
應(yīng)用程序常常具有在事務(wù)內(nèi)部運(yùn)行的腳本和組件。事務(wù)是一組在服務(wù)器內(nèi)部連續(xù)的,不可中斷的操作,即使該操作包括很多步驟,也只能整體返回操作成功或失敗。用戶可以創(chuàng)建在事務(wù)內(nèi)部運(yùn)行的ASP腳本,如果腳本的任何一部分失敗,整個(gè)事務(wù)都將會(huì)終止,這樣就提高了某一種操作的安全性。
由于Access數(shù)據(jù)庫(kù)加密機(jī)制過(guò)于簡(jiǎn)單,很容易破解。有效地防止數(shù)據(jù)庫(kù)被下載和破解,就成了提高ASP+Access安全性的重中之重。以下兩種方法簡(jiǎn)單、有效。
⑴非常規(guī)命名。為Access數(shù)據(jù)庫(kù)文件起一個(gè)復(fù)雜的名字,并把它放在幾層目錄下。例如,對(duì)于某個(gè)購(gòu)物站點(diǎn)的數(shù)據(jù)庫(kù),最好不把它命名為“shop.mdb”或“shopping.mdb”,而是起個(gè)非常規(guī)的名字,例如:faq9j345l.mdb,當(dāng)然你自己要記得住。再把它放在如./akkt/kwer/acd/aved5的幾層目錄下,這樣黑客想通過(guò)猜的方式得到Access數(shù)據(jù)庫(kù)文件名就很難了。
⑵使用ODBC數(shù)據(jù)源。在ASP程序設(shè)計(jì)中,如果在不太嚴(yán)格的條件下,為了安全,盡量使用ODBC數(shù)據(jù)源,不把數(shù)據(jù)庫(kù)名寫(xiě)在程序中,當(dāng)然這種方法對(duì)計(jì)算機(jī)具有依賴性。例如:
可見(jiàn),數(shù)據(jù)庫(kù)名字起得再怪異,隱藏的再深,當(dāng)ASP源代碼失密后,對(duì)方也是看得見(jiàn)的,很容易被下載下來(lái)。如果使用ODBC,這樣的問(wèn)題就都隱藏了:
conn.open“ODBC-DSN名”
你可以要求每個(gè)希望訪問(wèn)被限制的ASP內(nèi)容的用戶必須擁有有效的Windows帳號(hào)和密碼。每當(dāng)用戶試圖訪問(wèn)被限制的內(nèi)容時(shí),在操作系統(tǒng)這一層面就被阻攔,Web服務(wù)器進(jìn)行身份驗(yàn)證,即確認(rèn)用戶身份的有效性。Web服務(wù)器支持以下幾種身份驗(yàn)證方式:
⑴基本身份驗(yàn)證 提示用戶輸入用戶名和密碼
Windows身份驗(yàn)證 從用戶的Web瀏覽器通過(guò)加密方式獲取用戶身份信息。Web服務(wù)器僅當(dāng)禁止匿名訪問(wèn)或Windows文件系統(tǒng)限制匿名訪問(wèn)時(shí)才驗(yàn)證用戶身份。
⑵保護(hù)原數(shù)據(jù)庫(kù)
訪問(wèn)原數(shù)據(jù)庫(kù)的ASP腳本需要Web服務(wù)器計(jì)算機(jī)的管理員權(quán)限。在從遠(yuǎn)程計(jì)算機(jī)上運(yùn)行這些腳本時(shí),須經(jīng)已通過(guò)的身份驗(yàn)證,如使用 Windows請(qǐng)求/響應(yīng)驗(yàn)證方式進(jìn)行連接。應(yīng)該為管理asp應(yīng)用創(chuàng)建一個(gè)服務(wù)器或目錄并將其目錄安全驗(yàn)證方式設(shè)置為 Windows請(qǐng)求/響應(yīng)式身份驗(yàn)證。目前,僅 Microsoft Internet Explorer version 6.0或 更高版本支持 Windows請(qǐng)求/響應(yīng)式身份驗(yàn)證。
頁(yè)面緩沖可以加快網(wǎng)站的瀏覽速度,但由于頁(yè)面在計(jì)算機(jī)內(nèi)存中的停留給非法用戶提供了越權(quán)瀏覽的機(jī)會(huì)。因此,重要的Web頁(yè)面必須禁止頁(yè)面緩存,強(qiáng)制瀏覽器每次都要向Web服務(wù)器請(qǐng)求新頁(yè)面。利用Asp的Response對(duì)象的Expires屬性和Clear方法可解決此問(wèn)題。具體設(shè)置:Response.expires=0 Rsponse.clear,expires表示緩存頁(yè)面的有效期,0表示立即過(guò)期,clear表示清空緩沖區(qū)。
在使用ASP開(kāi)發(fā)網(wǎng)頁(yè)時(shí)要注意以下事項(xiàng):
(1)不要相信用戶的輸入具有合適的大小或者包含適當(dāng)?shù)淖址?,因?yàn)樗麄兛扇我廨斎搿R獙?duì)用戶輸入進(jìn)行驗(yàn)證。最好的辦法是創(chuàng)建一個(gè)activeX組件,您可以從ASP頁(yè)面中調(diào)用該組件來(lái)驗(yàn)證用戶輸入。也可以使用Server.HTMLEncode和Server.URLEncode這兩個(gè)方法的某一個(gè)。
(2)不要通過(guò)連接用戶輸入的字符串來(lái)創(chuàng)建ASP頁(yè)中的數(shù)據(jù)庫(kù)連接字符串。惡意用戶可以在他們的輸入中插入一些代碼而獲取該數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限。這就是sql攻擊漏洞。如果你使用的是SQL數(shù)據(jù)庫(kù),那么請(qǐng)使用存儲(chǔ)過(guò)程創(chuàng)建數(shù)據(jù)庫(kù)連接。
(3)不要使用默認(rèn)的SQL管理員帳戶sa。每個(gè)使用SQL的用戶都知道有sa帳戶。創(chuàng)建具有復(fù)雜密碼的其他SQL管理帳戶,并刪除sa帳戶。
(4)存儲(chǔ)客戶端用戶密碼之前,請(qǐng)對(duì)這些密碼使用哈希算法加密,進(jìn)行base64編碼,或者使用Server.HTMLEncode或Server.URLEncode進(jìn)行編碼。
(5)不要將安全數(shù)據(jù)存儲(chǔ)在Cookie中或者將輸入字段隱藏在網(wǎng)頁(yè)中。
[1]白艷玲.ASP安全問(wèn)題及解決方案[J].鄭州鐵路職業(yè)技術(shù)學(xué)院學(xué)報(bào),2006,(04).
[2]王艷紅.ASP安全技術(shù)研究[J].北京電子科技學(xué)院學(xué)報(bào),2004,(04).
[3]黃鑫源.淺談 ASP的安全漏洞與應(yīng)對(duì)策略[J].電腦知識(shí)與技術(shù),2011,(11).