淺談ASP技術(shù)的安全
(作者未知) 2011/6/22
摘要:本文對Asp技術(shù)及用Asp技術(shù)的WEB服務(wù)器的安全問題進行分析和總結(jié),從而提高使用ASP技術(shù)的WEB開發(fā)和應(yīng)用的安全性。
關(guān)鍵詞:ASP;Web服務(wù)器;數(shù)據(jù)庫
Asp是微軟推出的基于WEB編程的服務(wù)器端腳本環(huán)境,它可以完成以往CGI程序的所有功能。ASP可以輕松地實現(xiàn)對
頁面內(nèi)容的動態(tài)控制,根據(jù)不同的瀏覽者,顯示不同的頁面內(nèi)容。ASP可包含HTML標(biāo)簽,也可以直接存取數(shù)據(jù)庫及使用無限擴充的ActiveX控件,因此在程序編制上要比HTML方便而且更富有靈活性。目前,IIS+ASP+SQL(或Access)方案已成為中小型企業(yè)構(gòu)建自己網(wǎng)上信息系統(tǒng)的首選方案。雖然Asp具有快速開發(fā)能力,但Asp也存在很多不容忽視的安全漏洞。
一、ASP程序設(shè)計安全技術(shù)
Asp程序設(shè)計的安全主要涉及三個方面:Asp源代碼的安全、Asp程序設(shè)計的安全和數(shù)據(jù)庫安全。
1.ASP源代碼的安全:
(1)保證ASP源碼的安全的主要技術(shù)是Asp腳本加密技術(shù)。常用方法有兩種:一是ASP2DLL技術(shù)。其基本思想是利用VB6.0提供的Activexdll對象將Asp代碼進行封裝,編譯為DLL文件,在Asp程序中調(diào)用該DLL文件。二是利用微軟提供的Script Encoder加密軟件對Asp頁面進行加密。
(2)置合適的腳本映射。應(yīng)用程序的腳本映射保證了Web服務(wù)器不會意外地下載Asp文件的源代碼,但不安全或有錯誤的腳本映射易導(dǎo)致Asp源代碼泄漏。因此,應(yīng)將用不到的有一定危險性的腳本映射刪掉(如*.htr文件及*.htw,*.ida,*.idq等索引文件)。
2.程序設(shè)計中的安全
(1)用戶名、口令機制。用戶名、口令是最基本的安全技術(shù),在Asp中常采用Form表單提交用戶輸入的帳號和密碼,與用戶標(biāo)識數(shù)據(jù)庫中相應(yīng)的字段進行匹配,在必要的場合可以使用MD5算法來加密用戶輸入的密碼,可以保證在線路被竊聽的情況下依然保證數(shù)據(jù)的安全,保護用戶口令的安全。
(2)注冊驗證。為了網(wǎng)站資源的安全性和易于管理,可以對用戶進行分級,給定權(quán)限,使特定用戶訪問特定的資源群,也可以阻止未授權(quán)用戶使用網(wǎng)站的資源,這就需要對用戶進行注冊驗證操作。在ASP中,我們可以利用Session對象和Http頭信息來實現(xiàn)此類安全控制。當(dāng)訪問者通過身份驗證頁面后,就把Session對象的Sessionid屬性作為一個Session變量存儲起來,當(dāng)訪問者試圖導(dǎo)航到一種有效鏈接的頁面時,可將當(dāng)前的Sessionid與存儲在Session對象中的ID進行比較,如果不匹配,則拒絕訪問。如在Session(“id”)中保存著第一次鏈接的Sessionid,﹤%if session.sessionid﹤﹥session(“id”) then response.end%﹥’拒絕訪問。
(3)網(wǎng)頁過期管理。考慮到有可能用戶在使用網(wǎng)頁的過程中,有可能會長時間離開計算機處理別的事情,這樣會給別有用心的人有可乘之機,所以應(yīng)該給網(wǎng)頁一個過期時間。這樣不僅保證了用戶的安全,也可以減少服務(wù)器的鏈接數(shù),減少服務(wù)器壓力?梢允褂胹ession.timeout=時間,過了這么長時間網(wǎng)頁就失效了,前提是你用一個session值來判斷登錄狀態(tài)如session.timeout=20。
(4)頁面緩沖管理:頁面緩沖可以加快網(wǎng)站的瀏覽速度,但也會給非法用戶提供了越權(quán)瀏覽的機會。因此,重要的Web頁面(如身份驗證頁面)必須禁止頁面緩存,強制瀏覽器每次向Web服務(wù)器請求新頁面。利用Asp的Response對象的Expires屬性和Clear方法可解決此問題。具體設(shè)置:Response.expires=0Rsponse.clear,expires表示緩存頁面的有效期,0表示立即過期,clear表示清空緩沖區(qū)。
(5)程序錯誤管理:錯誤的執(zhí)行參數(shù)和意外的執(zhí)行過程,都可以導(dǎo)致頁面出現(xiàn)錯誤提示,而這些錯誤提示會提供給別人很多網(wǎng)站的信息,比如使用數(shù)據(jù)庫的類型,表中所含字段的名稱等等。會造成程序的不安全。所以在編程過程中要注意對異常數(shù)據(jù)的處理和意外事件的控制,才能保證網(wǎng)站的安全性。
3.?dāng)?shù)據(jù)庫的安全。
(1)ACCESS數(shù)據(jù)庫:在一些小型程序中,常用到ACCESS數(shù)據(jù)庫,ACCESS數(shù)據(jù)庫易于管理而安全性低,應(yīng)注意在命名時不要采用常規(guī)的*.mdb的后綴名,而應(yīng)該用*.asp,*.inc文件的后綴名,這樣,即使數(shù)據(jù)庫路徑即使被別人發(fā)現(xiàn),也不能下載數(shù)據(jù)庫而導(dǎo)致信息的不安全。
(2)SQL SERER數(shù)據(jù)庫:首先應(yīng)更改sa口令,取消(未完,下一頁)
|