ASPNET虛擬主機在顯示文件時的隱患首先我們來看實例顯示文件屬性和內容的程序showfileaspx
在顯示屬性和內容時需要用到的兩個主要的類
SystemIOFileInfo提供創建復制刪除移動和打開文件的實例方法並且幫助創建 FileStream 對象
SystemIOStreamReader實現一個 TextReader使其以一種特定的編碼從字節流中讀取字符除非另外指定StreamReader的默認編碼為 UTF而不是當前系統的 ANSI 代碼頁UTF 可以正確處理 Unicode 字符並在操作系統的本地化版本上提供一致的結果
ASPNET虛擬主機在顯示文件之Showfileaspx頁面主要代碼
﹤asp:Label id=FileDetail runat=server/﹥ 我們只是將文件的屬性信息和部分內容顯示在此Label上所以沒有其他復雜的代碼
獲取文件信息和內容的主要代碼都在Page_Load方法中(代碼在showfileaspxcs文件中)
//接收傳入的參數確定需要操作的文件名稱
strFileShow = RequestQueryString[file];
//根據文件名實例化一個FileInfo對象
FileInfo fi = new FileInfo(strFileShow);
FileDetailText = 文件名;
FileDetailText += strFileShow+﹤br﹥;
FileDetailText += 文件大小;
//獲得文件的大小然後變換單位為KB
FileDetailText += (fiLength/)ToString()+K﹤br﹥;
FileDetailText += 創建文件時間;
//獲得文件的創建日期
FileDetailText += fiCreationTimeToString();
FileDetailText += 上次訪問時間;
//獲得文件的上次訪問日期
FileDetailText += fiLastAccessTimeToString()+﹤br﹥;
FileDetailText += 上次寫入時間;
//獲得文件的上次寫入日期
FileDetailText += fiLastWriteTimeToString()+﹤br﹥;
//實例化一個StreamReader對象用於讀取此FileInfo的內容
StreamReader FileReader = fiOpenText();
//定義一個長度為的字符數組作為緩沖區
char[] theBuffer = new char[];
/*ReadBlock方法從當前流中讀取最大數量的字符並從索引開始將該數據寫入緩沖區
參數 char[] buffer方法返回時包含指定的字符數組
int indexbuffer 中開始寫入的位置
int count最多讀取的字符數
*/ int nRead = FileReaderReadBlock(theBuffer);
FileDetailText += new String(theBuffernRead);
//關閉此 StreamReader 並釋放與之關聯的所有系統資源
FileReaderClose();
到目前為止我們實現了一個簡單的web頁面的服務器磁盤管理應用程序可以查看刪除目錄和文件如果需要修改文件新建文件和文件夾等功能只需稍作修改添加上相應的代碼就可以由於我們只是通過這個程序說明服務器中存在的安全隱患所以在這裡就不再實現這些功能了
通過這三個簡單的程序我想大家已經能夠清楚的認識到ASPNET虛擬主機的隱患漏洞的危害性了如果我們不加防范的話其他用戶的程序就能被惡意使用此功能的用戶查看刪除服務器的系統日志系統文件也沒有任何安全可言了
ASPNET虛擬主機在顯示文件時的隱患就介紹到這裡也是對ASPNET虛擬主機的隱患做一下了解希望對你有所幫助
From:http://tw.wingwit.com/Article/program/net/201311/13246.html