ASP.NET虛擬主機(jī)在顯示文件時(shí)的隱患淺析
ASP.NET虛擬主機(jī)在顯示文件時(shí)的隱患,首先我們來(lái)看實(shí)例,顯示文件屬性和內(nèi)容的程序showfile.aspx
在顯示屬性和內(nèi)容時(shí)需要用到的兩個(gè)主要的類:
System.IO.FileInfo:提供創(chuàng)建、復(fù)制、刪除、移動(dòng)和打開文件的實(shí)例方法,并且?guī)椭鷦?chuàng)建 FileStream 對(duì)象。
System.IO.StreamReader:實(shí)現(xiàn)一個(gè) TextReader,使其以一種特定的編碼從字節(jié)流中讀取字符。除非另外指定,StreamReader的默認(rèn)編碼為 UTF-8,而不是當(dāng)前系統(tǒng)的 ANSI 代碼頁(yè)。UTF-8 可以正確處理 Unicode 字符并在操作系統(tǒng)的本地化版本上提供一致的結(jié)果。
ASP.NET虛擬主機(jī)在顯示文件之Showfile.aspx頁(yè)面主要代碼:
- ﹤asp:Label id="FileDetail" runat="server"/﹥
我們只是將文件的屬性信息和部分內(nèi)容顯示在此Label上。所以沒(méi)有其他復(fù)雜的代碼。
獲取文件信息和內(nèi)容的主要代碼都在Page_Load方法中(代碼在showfile.aspx.cs文件中):
- //接收傳入的參數(shù),確定需要操作的文件名稱
- strFile2Show = Request.QueryString["file"];
- //根據(jù)文件名實(shí)例化一個(gè)FileInfo對(duì)象
- FileInfo fi = new FileInfo(strFile2Show);
- FileDetail.Text = "文件名:";
- FileDetail.Text += strFile2Show+"﹤br﹥";
- FileDetail.Text += "文件大小";
- //獲得文件的大小,然后變換單位為KB
- FileDetail.Text += (fi.Length/1024).ToString()+"K﹤br﹥";
- FileDetail.Text += "創(chuàng)建文件時(shí)間:";
- //獲得文件的創(chuàng)建日期
- FileDetail.Text += fi.CreationTime.ToString();
- FileDetail.Text += "上次訪問(wèn)時(shí)間:";
- //獲得文件的上次訪問(wèn)日期
- FileDetail.Text += fi.LastAccessTime.ToString()+"﹤br﹥";
- FileDetail.Text += "上次寫入時(shí)間:";
- //獲得文件的上次寫入日期
- FileDetail.Text += fi.LastWriteTime.ToString()+"﹤br﹥";
- //實(shí)例化一個(gè)StreamReader對(duì)象,用于讀取此FileInfo的內(nèi)容
- StreamReader FileReader = fi.OpenText();
- //定義一個(gè)長(zhǎng)度為1000的字符數(shù)組作為緩沖區(qū)
- char[] theBuffer = new char[1000];
- /*ReadBlock方法:從當(dāng)前流中讀取最大數(shù)量的字符并從索引開始將該數(shù)據(jù)寫入緩沖區(qū)。
- 參數(shù):
- char[] buffer:方法返回時(shí),包含指定的字符數(shù)組
- int index:buffer 中開始寫入的位置
- int count:最多讀取的字符數(shù)
- */
- int nRead = FileReader.ReadBlock(theBuffer,0,1000);
- FileDetail.Text += new String(theBuffer,0,nRead);
- //關(guān)閉此 StreamReader 并釋放與之關(guān)聯(lián)的所有系統(tǒng)資源
- FileReader.Close();
到目前為止,我們實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的web頁(yè)面的服務(wù)器磁盤管理應(yīng)用程序,可以查看、刪除目錄和文件。如果需要修改文件、新建文件和文件夾等功能,只需稍作修改,添加上相應(yīng)的代碼就可以。由于我們只是通過(guò)這個(gè)程序說(shuō)明服務(wù)器中存在的安全隱患,所以在這里就不再實(shí)現(xiàn)這些功能了。
通過(guò)這三個(gè)簡(jiǎn)單的程序,我想大家已經(jīng)能夠清楚的認(rèn)識(shí)到ASP.NET虛擬主機(jī)的隱患漏洞的危害性了,如果我們不加防范的話,其他用戶的程序就能被惡意使用此功能的用戶查看、刪除,服務(wù)器的系統(tǒng)日志、系統(tǒng)文件也沒(méi)有任何安全可言了。
ASP.NET虛擬主機(jī)在顯示文件時(shí)的隱患就介紹到這里,也是對(duì)ASP.NET虛擬主機(jī)的隱患做一下了解,希望對(duì)你有所幫助。
【編輯推薦】