ASP.NET虛擬主機(jī)在刪除文件目錄時(shí)的隱患淺析
ASP.NET虛擬主機(jī)在刪除文件目錄時(shí)刪除子目錄和文件的主要方法和代碼:
在刪除子目錄時(shí),我們需要用到Directory.Delete (string,bool)方法,此方法有兩種:
1.public static void Delete(string);
從指定路徑刪除空目錄。
2.public static void Delete(string, boolean);
ASP.NET虛擬主機(jī)在刪除文件目錄時(shí)刪除指定的目錄并(如果指示)刪除該目錄中的任何子目錄,將boolean設(shè)置為true的話,則刪除此目錄下的所有子目錄和文件,否則將boolean設(shè)置為false。
在這里我們使用了第二種方法,如果選擇刪除的話,將刪除此目錄下的所有子目錄和文件。
注意:Directory 類(lèi)的所有方法都是靜態(tài)的,因而無(wú)需具有目錄Directory的實(shí)例就可被調(diào)用。
- /*實(shí)現(xiàn)刪除子目錄的方法,此方法為VS.NET自動(dòng)添加,
- 注意DataGridCommandEventArgs e為DirGrid中 CommandName="Delete" 的ButtonColumn的事件,
- 通過(guò)此事件,我們可以得到是那一行的ButtonColumn按鈕列被點(diǎn)擊,進(jìn)而確定我們需要?jiǎng)h除的子目錄的名稱(chēng)*/
- private void DirGrid_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e){
- /*定義一個(gè)單元格,e.Item為此事件所發(fā)生行的所有項(xiàng)目,
- e.Item.Cells[1]為整個(gè)行的第二個(gè)單元格的內(nèi)容,在此DataGrid中為子目錄的名稱(chēng)
- */
- TableCell ItemCell = e.Item.Cells[1];
- //得到此子目錄的名稱(chēng)的字符串
- string item = ItemCell.Text;
- //刪除此子目錄
- Directory.Delete(item,true);
- //刪除后進(jìn)行數(shù)據(jù)綁定以更新數(shù)據(jù)列表
- DirGrid.DataBind();
- }
ASP.NET虛擬主機(jī)在刪除文件目錄時(shí),我們需要用到File.Delete(string path);
注意:File 類(lèi)的所有方法都是靜態(tài)的,因而無(wú)需具有目錄的實(shí)例就可被調(diào)用。
- private void FileGrid_DeleteCommand(object source,
- System.Web.UI.WebControls.DataGridCommandEventArgs e) {
- TableCell ItemCell = e.Item.Cells[1];
- //得到此文件名稱(chēng)的字符串
- string item = ItemCell.Text;
- //刪除此文件
- File.Delete(item);
- //刪除后進(jìn)行數(shù)據(jù)綁定以更新數(shù)據(jù)列表
- DirGrid.DataBind();
- }
通過(guò)上邊的主要方法我們?cè)陧?yè)面上實(shí)現(xiàn)了一個(gè)刪除某一個(gè)子目錄或者文件的功能,此功能在測(cè)試時(shí)需要慎重使用,一旦刪除無(wú)法通過(guò)常規(guī)方法恢復(fù)。其他如目錄或文件改名、修改內(nèi)容等方法都可以在此程序基礎(chǔ)上添加相應(yīng)的功能,實(shí)現(xiàn)方法也很簡(jiǎn)單。各位愛(ài)好者可以通過(guò)添加相應(yīng)功能,使之?dāng)U充為一個(gè)基于Web的服務(wù)器文件管理系統(tǒng)。我們也可以由此看到這個(gè)程序的危害性,一個(gè)沒(méi)有對(duì)此安全隱患采取防范措施的服務(wù)器的文件系統(tǒng)就都暴露在了使用此程序的用戶(hù)面前。
ASP.NET虛擬主機(jī)在刪除文件目錄時(shí)可能出現(xiàn)的問(wèn)題的介紹就到這里,希望通過(guò)實(shí)例對(duì)你了解這方面有所幫助。
【編輯推薦】