ASP.NET虛擬機器主機的重大安全隱患(一)
來源:互聯網
上載者:User
2002-07-01· ·秦海鵬··yesky
說明:本文中所有程式均在Windows 2000 Server中文版 + SP2上編譯運行無誤
開發環境:.Net 架構1.0 Version 1.0.3705
一、ASP.NET虛擬機器主機存在的重大隱患
我曾經在WWW.BRINKSTER.COM申請了一個免費的ASP.NET空間,上傳了兩個程式,其中一個查看目錄和檔案的程式證明我的判斷:ASP共用空間伺服器存在的一個安全問題,在 ASP+ 共用空間伺服器中依然存在並且變得更加難以防範!通過這個程式我可以瀏覽所有使用者的ASP+程式,可以查看伺服器的系統日誌……,當然,如果我想刪除什麼的話也不會有什麼問題。為了讓大家更清楚地瞭解這一問題,我們有必要簡單介紹一下ASP中就已經存在的這一問題。
ASP中常用的標準組件:FileSystemObject,這個組件為 ASP 提供了強大的檔案系統訪問能力,可以對伺服器硬碟上的任何有許可權的目錄和檔案進行讀寫、刪除、改名等操作。FSO對象來自微軟提供的指令碼運行庫scrrun.dll中。
使用下面的代碼就可以在ASP中建立一個FSO對象:
Set fso = CreateObject("Scripting.FileSystemObject")
我們使用fso對象包含的屬性和方法,如Drive、Drives、Folder、Floders、File、Files等對伺服器的磁碟、目錄和檔案進行讀、寫、刪除等操作。這一強大的檔案系統訪問能力給ASP共用空間提供者帶來了嚴重的安全問題,很多ASP空間的管理員都刪除此組件或將這個組件改名以避免使用者使用這一標準組件。刪除群組件或組件改名確實是一個簡單的方法並且也很有效,但是卻使廣大使用者無法使用它的強大的功能。網路上還有一種看起來很美的方案,它允許使用者使用 FileSystemObject 組件又不影響伺服器的安全,即對每一個使用者都設定一個獨立的伺服器使用者和單個目錄的操作許可權。但是這種方法是有問題的。因為ASP和ASP.NET中在這方面的問題十分類似,所以我們將在ASP.NET的相應解決辦法部分詳加說明。
在ASP.NET中我們發現這一問題仍然存在,並且變得更加難以解決。這是因為.NET中關於系統IO操作的功能變得更加強大,而使這一問題更嚴重的是ASP.NET所具有的一項新功能,這就組件不需要象ASP那樣必須要使用regsvr32來註冊了,只需將Dll類庫檔案上傳到bin目錄下就可以直接使用了。這一功能確實給開發ASP.NET帶來了很大的方便,但是卻使我們在ASP中將此dll刪除或者改名的解決方案失去效用了,防範此問題就變得更加複雜。在討論解決方案之前,我們先來看一下怎麼來實現上述的危險的功能。