top
Loading...
ASP.NET虛擬主機的重大安全隱患(一)
說明:本文中所有程序均在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刪除或者改名的解決方法失去效用了,防范此問題就變得更加復雜。在討論解決方案之前,我們先來看一下怎么來實現上述的危險的功能。

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗