摘要:本文基于ASP技術,介紹了ASP技術的工作原理,ASP具有易開發、無需編譯或連接即可執行、無需客戶端瀏覽器支持等許多優點,迅速被廣大網絡設計和開發人員所接受,成為他們在Windows 環境下首選的網站開發和編程技術。ASP雖然具有許多優點,但是我們也應該看到ASP 從一開始就一直受到眾多漏洞的困擾。因此我們有必要了解ASP所存在的安全問題,并且找到相應的對策,使我們開發的ASP網站更加安全可靠。
關鍵詞:ASP技術;安全漏洞;Windows環境;網絡安全
1 引言
ASP即Active Server Pages,它是微軟開發的一種動態網站編寫技術,屬于嵌入式服務器端腳本,允許HTML和ASP程序語句的互相嵌套,并且可以直接存取數據庫及使用無限擴充的ActiveX控件,因此ASP的程序編制比HTML更方便,交互功能更強大,且更有靈活性。但是有些網站管理員只看到ASP的快速開發能力,卻忽視了ASP安全問題,因此如何保護Web網站的安全是每一個Web網站開發人員所面臨的重要課題,本文通過對基于ASP技術的動態Web網站工作原理的分析,探討了基于ASP的網站在服務器和源代碼方面的漏洞,并給出了防范措施和對策。
2 ASP 的工作原理
ASP 的執行環境是在服務器端,但并不是任何服務器都可以執行ASP。ASP需要Microsoft的IIS(Internet信息服務器)或PWS(個人Web 服務器)的支持。當客戶端的用戶用Web瀏覽器來訪問ASP頁面時,Web 服務器分析、判斷出該請求是ASP腳本的應用后,將調用ASP 腳本的解釋運行引擎(ASP. DLL)從文件系統或內部緩沖區獲取制定的ASP腳本文件,接著就進行語法分析并解釋執行。最終的處理結果將形成標準的HTML格式文件,通過Web服務器返回給Web瀏覽器,由Web瀏覽器在客戶端形成最終的結果呈現。
3 ASP 執行過程以及在網絡安全上的優點
ASP 腳本是使用VBScript,JavaScript或JScript腳本語言編寫的,與標準HTML頁面混合在一起的腳本所構成的文本格式的文件。當Web瀏覽器向Web服務器發出HTTP請求,訪問ASP文件時,Web服務器判斷出該請求的ASP文件含有“<%”和“%>”后,調用ASP.DLL,進行語法分析、解釋執行,然后將最終結果轉換成為標準的HTML格式內容,返回給Web瀏覽器,由Web瀏覽器顯示。這是一次完整的ASP執行過程。ASP在網絡安全方面主要有以下優點:
(1)不泄漏源代碼相比客戶端執行的JavaScript 程序,ASP在網絡安全上的優點之一是用戶不能看到ASP 源程序。因為傳到瀏覽器端的只是轉換成HTML語言的結果。這一點既維護了ASP開發人員的版權,又維護了網站系統的安全。
(2)支持虛擬目錄的建立在網絡安全上有重要意義。因為虛擬目錄方式可以隱藏站點目錄結構。而站點目錄結構的暴露,往往是導致系統受到攻擊的第一步。而且網站源代碼不需要任何修改,就可以搬遷到另一臺服務器上正常運行,另外,管理員可以對虛擬目錄設置不同的操作權限。從而方便管理,并且提高ASP程序的安全性。
4 ASP常見的安全漏洞及防范措施
4.1 Access 數據庫訪問密碼泄露安全漏洞
由于Access數據庫的加密機制非常簡單,即使數據庫設置了密碼,解密也很容易。該數據庫系統通過將用戶輸入的密碼與某一固定密鑰進行異或來形成一個加密串,并將其存儲在*.mdb文件從地址“H42”開始的區域內。由于異或操作的特點是經過2次異或就能恢復原值,因此,用這一密鑰與*.mdb 文件從地址“H42”開始區域內的加密串進行第2次異或操作,可以輕松地得到任何Access數據庫的密碼。
防范措施:
(1)不能把密碼的物理路徑直接寫在程序中, 而應使用虛擬路徑。
(2)使用SSL維護應用程序的安全。它提供了一種安全的虛擬透明的方式來建立與用戶的加密通信連接。SSL保證了Web內容的驗證,并能可靠地確認訪問被限制的Web站點的用戶的身份,防止發送信息被監聽的可能。
(3)客戶資格認證。這是一種十分安全的方法。每當用戶試圖登錄到需要資格驗證的應用程序時,用戶的Web瀏覽器會自動向服務器發送用戶資格。如果Web 服務器的SSL 資格映射特性配置正確,那么服務器就可以在許可用戶對ASP應用程序訪問之前對其身份進行確認。
4.2 Access數據庫下載漏洞
在采用ASP+Access技術建設的網站中,如果有人通過各種方法獲得或者猜到數據庫的存儲路徑和文件名,則該數據庫就可以被下載到本地。例如:對于網上書店數據庫,一般命名為book.mdb、store.mdb等。存儲路徑一般為“URL/database”或放在根目錄“URL/”下。這樣,只要敲入地址:“URL/database/store.mdb”,數據庫就可以被下載。
防范措施:
(1)非常規命名法。為Access 數據庫文件起一個復雜的非常規名字,并把這個名字放在幾個目錄下,這樣想通過猜的方式得到Access數據庫文件名就很難了。
(2)使用ODBC數據源。盡量使用ODBC數據源,不要把數據庫名寫在程序中,否則,數據庫名將隨ASP源代碼的失密而一同失密。
(3)如果將Access數據庫的文件*.mdb改名為*.asp 或*.asa,則即使瀏覽者獲知了數據庫文件的具體地址,當瀏覽者試圖下載這些*. asp文件時,瀏覽者將會碰到訪問錯誤,數據庫在瀏覽器以亂碼顯示,同時在數據庫的連接字符串,我們將相應的*.mdb改為*.asp或*.asa并不會影響程序對數據庫的正常訪問。
4.3 SQL注入漏洞
SQL注入的原理,就是從客戶端提交特殊的代碼,從而收集程序及服務器的信息,獲取想得到的資料。由于ASP程序員在編寫程序時不規范,代碼存在漏洞,動態生成Sql命令時沒有對用戶輸入的數據進行驗證而受到攻擊。黑客會利用特殊查詢語句,得到更多的數據表數據,甚至數據表的全部。
防范措施:
只有用戶名和密碼完全正確才能通過驗證。另外,編寫代碼時在處理類似留言板、論壇等輸入框的ASP程序中,最好屏蔽掉HTML、JavaScript、VBScript語句,并且要對輸入的字符進行限制,特別是一些特殊字符,比如單引號、雙引號、分號、逗號、冒號、連接號等進行轉換或者過濾,同時也應對輸入的字符長度進行限制。而且要在客戶端進行輸入合法性檢查,同時要在服務器端程序中進行類似檢查。
4.4 木馬漏洞
入侵者一般是通過ASP程序上傳功能的漏洞進入后臺上傳ASP木馬程序。當木馬一旦上傳上去就有可能取得網站的管理權限,修改或刪除文件、數據庫,篡改網站的主頁。因此ASP木馬的防范也尤為重要。
防范措施:
(1)建議用戶通過ftp來上傳、維護網頁,盡量不安裝ASP的上傳程序。
(2)對ASP上傳程序的調用一定要進行身份認證,并只允許信任的人使用上傳程序。
(3)上傳文件時, 要限制文件的擴展名。比如:上傳圖片文件時,設置為只能上傳擴展名.jpg或*.gif的文件,拒絕上傳擴展名為.asp或.exe的文件。
(4)到正規網站下載ASP程序,下載后要對其數據庫名稱和存放路徑進行修改,數據庫文件名稱也要有一定復雜性。
(5)日常要多維護,經常查看在文件夾有沒有不明的*.asp或*.exe文件,特別是放置上傳文件的文件夾內,數據庫中有沒有陌生的數據表。一旦發現被入侵,立即刪除文件。
(6)要經常備份數據庫、網頁等重要文件,一旦被木馬破壞,能及時還原,減少損失。
(7)網站的后臺也是非常關鍵的。不要在頁面上作后臺的地址鏈接,這樣后臺地址不容易被猜解。網站后臺的管理賬號密碼不應過于簡單,并且要使用附加碼。
4.5 源代碼被竊取的安全性隱患安全漏洞
由于ASP程序采用的是非編譯性語言,任何人只要進入站點,就可以獲得源代碼,從而造成ASP應用程序源代碼的泄露。
防范措施:為有效地防止ASP源代碼泄露造成的危害,有必要對ASP頁面進行加密。ASP加密的方法很多,其中行之有效、操作簡單的方法是使用微軟公司提供的Script Encoder 對ASP頁面進行加密,該工具可以從微軟網站免費下載。
4.6 code.asp文件泄漏ASP代碼安全漏洞
在微軟提供的ASP1.0例程里有一個code.asp文件專門用來查看其他.asp文件的源代碼, 如果有人把該程序上傳至服務器,而服務器沒有任何防范措施的話,就可以很容易地查看他人的程序。
防范措施:對于IIS自帶的show asp code 的ASP程序文件,刪除該文件或者禁止訪問該目錄即可。
4.7 引號造成的漏洞
很多網站把注冊用戶名和密碼放到數據庫中,在登錄程序中用以下SQL 語句來查詢數據庫以核對數據。
防范措施:
解決這個漏洞的方法是修改單引號的使用。對SQL 語句中的單引號進行修改,使用像下面的函數來轉換。
Function sqlst r (data)Sqlst r = ”’” Replace (data ,”’“ ,”’’”) “’“End function
把SQL中可能存在的單引號換成雙單引號連用的形式,這就避免了因單引號的前后匹配造成的攻擊者饒過用戶名和密碼驗證的漏洞。
5 結論
隨著ASP技術在網站建設中的大量應用,會有越來越多的人研究ASP技術,這就需要我們構建更加安全的ASP站點。本文僅列舉了一些比較典型的ASP安全漏洞及其防范措施,ASP應用技術在不斷發展,新的程序編碼漏洞還可能被發現,我們仍需要保持警惕。
參考文獻:
[1]趙淑霞,陳書平.基于ASP構造交互Web安全技術[J].陜西煤炭,2004 (2):36-37.
[2]張文增,林曉森等.ASP網站安全研究[J].計算機工程,2002(3):14-18.
[3]任新見.ASP 動態網站快速開發實務[M] .北京:電子工業出版社,2004:7-10.
[4]鄧文淵,陳惠貞,陳俊榮.挑戰ASP 與網頁數據庫設計[M].北京:中國鐵道出版社,2004:73-75.
[5]銀石動力.實戰網絡安全[M].北京:北京郵電大學出版社,2005:126-130.
[6]王琳.ASP網站的安全漏洞與防范措施[J].一重技術,2005(06):14-15.
[7]郜亞麗,許偉昶.基于ASP網站的安全漏洞及防護策略研究[J].河南廣播電視大學學報,2007,20(4):112-113.
[8]姜志軍.基于ASP網站的安全問題[J].網絡通訊與安全,2007(07):79-80.