直播中
一、ASP.NET虛擬主機存在的重大隱患
我曾經(jīng)在WWW.BRINKSTER.COM申請了一個免費的ASP.NET空間,上傳了兩個程序,其中一個查看目錄和文件的程序證明我的判斷:ASP共享空間服務(wù)器存在的一個安全問題,在 ASP+ 共享空間服務(wù)器中依然存在并且變得更加難以防范!通過這個程序我可以瀏覽所有用戶的ASP+程序,可以查看服務(wù)器的系統(tǒng)日志……,當(dāng)然,如果我想刪除什么的話也不會有什么問題。為了讓大家更清楚地了解這一問題,我們有必要簡單介紹一下ASP中就已經(jīng)存在的這一問題。
ASP中常用的標(biāo)準(zhǔn)組件:FileSystemObject,這個組件為 ASP 提供了強大的文件系統(tǒng)訪問能力,可以對服務(wù)器硬盤上的任何有權(quán)限的目錄和文件進行讀寫、刪除、改名等操作。FSO對象來自微軟提供的腳本運行庫scrrun.dll中。
使用下面的代碼就可以在ASP中創(chuàng)建一個FSO對象:
Set fso = CreateObject("Scripting.FileSystemObject")
我們使用fso對象包含的屬性和方法,如Drive、Drives、Folder、Floders、File、Files等對服務(wù)器的磁盤、目錄和文件進行讀、寫、刪除等操作。這一強大的文件系統(tǒng)訪問能力給ASP共享空間提供者帶來了嚴重的安全問題,很多ASP空間的管理員都刪除此組件或?qū)⑦@個組件改名以避免用戶使用這一標(biāo)準(zhǔn)組件。刪除組件或組件改名確實是一個簡單的方法并且也很有效,但是卻使廣大用戶無法使用它的強大的功能。網(wǎng)絡(luò)上還有一種看起來很美的方案,它允許用戶使用 FileSystemObject 組件又不影響服務(wù)器的安全,即對每一個用戶都設(shè)置一個獨立的服務(wù)器用戶和單個目錄的操作權(quán)限。但是這種方法是有問題的。因為ASP和ASP.NET中在這方面的問題十分類似,所以我們將在ASP.NET的相應(yīng)解決辦法部分詳加說明。
在ASP.NET中我們發(fā)現(xiàn)這一問題仍然存在,并且變得更加難以解決。這是因為.NET中關(guān)于系統(tǒng)IO操作的功能變得更加強大,而使這一問題更嚴重的是ASP.NET所具有的一項新功能,這就組件不需要象ASP那樣必須要使用regsvr32來注冊了,只需將Dll類庫文件上傳到bin目錄下就可以直接使用了。這一功能確實給開發(fā)ASP.NET帶來了很大的方便,但是卻使我們在ASP中將此dll刪除或者改名的解決方法失去效用了,防范此問題就變得更加復(fù)雜。在討論解決方案之前,我們先來看一下怎么來實現(xiàn)上述的危險的功能。