自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ASP.NET虛擬主機(jī)在文件目錄管理時(shí)的隱患淺析

開發(fā) 后端
ASP.NET虛擬主機(jī)在文件目錄管理時(shí)的隱患都有什么呢?本文通過實(shí)例分析說明ASP.NET虛擬主機(jī)在文件目錄管理時(shí)的一些情況。

ASP.NET虛擬主機(jī)在文件目錄管理時(shí)的隱患是什么么?首先讓我們看一個(gè)實(shí)例,顯示目錄中所有子目錄和文件的程序listdir.aspx

目錄下有子目錄和文件兩種形式,必須分別對(duì)待。我們調(diào)用此程序本身對(duì)子目錄進(jìn)行列表顯示,而文件我們需要調(diào)用showfile.aspx程序?qū)ξ募膶傩院蛢?nèi)容進(jìn)行顯示。并且兩者還有不同的刪除方法,所以我們?cè)谶@里設(shè)置了兩個(gè)DataGrid,兩個(gè)DataTable,兩個(gè)DataView,分別處理和顯示目錄和文件。

ASP.NET虛擬主機(jī)在文件目錄管理時(shí)顯示和處理目錄和文件的DataGrid的代碼(代碼在listdir.aspx文件):

顯示目錄或文件的序號(hào)和名稱的數(shù)據(jù)列類似于listdrivers.aspx程序中的相應(yīng)代碼,這里就不再重復(fù)了。對(duì)于子目錄和文件分別有各自的處理頁(yè)面,所以需要導(dǎo)航到兩個(gè)不同的頁(yè)面,對(duì)于子目錄,我們繼續(xù)使用listdir.aspx程序?qū)ζ湎碌淖幽夸浐臀募M(jìn)行列表顯示:

  1. ﹤asp:HyperLinkColumn DataNavigateUrlField="DirName" 
  2. DataNavigateUrlFormatString="listdir.aspx?dir={0}" 
  3. DataTextField="DirDetail"   
  4. HeaderText="詳細(xì)信息" 
  5. Target="_new" 
  6. /﹥ 

對(duì)于文件,我們使用showfile.aspx程序顯示其屬性和內(nèi)容:

  1. ﹤asp:HyperLinkColumn DataNavigateUrlField="FileName" 
  2. DataNavigateUrlFormatString="showfile.aspx?file={0}"   
  3. DataTextField="FileDetail"   
  4. HeaderText="詳細(xì)信息"   
  5. Target="_new"   
  6. /﹥  

在兩個(gè)DataGrid(DirGrid,F(xiàn)ileGrid)中我們分別設(shè)置了兩個(gè)HyperLinkColumn列來導(dǎo)航到不同的處理頁(yè)面。

ASP.NET虛擬主機(jī)在文件目錄管理時(shí)在兩個(gè)DataGrid中我們都使用了一個(gè)刪除的按鈕列:

  1. ﹤asp:ButtonColumn HeaderText="刪除"   
  2. Text="刪除"   
  3. CommandName="Delete" 
  4. /﹥  

由于添加、更新、刪除功能列都是DataGrid的默認(rèn)模板列,所以可以在Vs.net中通過DataGrid的屬性生成器自動(dòng)添加此列。

獲取上一頁(yè)面所傳遞來的參數(shù)的代碼:

因?yàn)樵谙旅娈a(chǎn)生數(shù)據(jù)源的方法中需要使用由上一個(gè)頁(yè)面?zhèn)鬟f過來的參數(shù)來確定目錄和文件的名稱,所以在頁(yè)面的Page_Load方法里使用了下列代碼:

strDir2List = Request.QueryString["dir"];

字符串strDir2List即傳過來的目錄名或文件名。

因?yàn)槲覀兪褂昧藘蓚€(gè)DateGrid,就需要進(jìn)行兩次數(shù)據(jù)綁定,就有兩個(gè)不同的生成數(shù)據(jù)源的方法。

生成目錄數(shù)據(jù)網(wǎng)格(DirGrid)數(shù)據(jù)源的方法:

  1. //通過此方法返回一個(gè)集合形式的數(shù)據(jù)視圖DataView,用來初始化子目錄的DataGrid  
  2. ICollection CreateDataSourceDir() {  
  3. dtDir = new DataTable();  
  4. DataRow dr;  
  5. //向DataTable中添加新的數(shù)據(jù)列,共四列  
  6. dtDir.Columns.Add(new DataColumn("DirID"typeof(Int32)));  
  7. dtDir.Columns.Add(new DataColumn("DirName"typeof(string)));  
  8. dtDir.Columns.Add(new DataColumn("DelDir"typeof(string)));  
  9. dtDir.Columns.Add(new DataColumn("DirDetail"typeof(string)));   
  10. //根據(jù)傳入的參數(shù)(目錄名)得到此目錄下所有子目錄名的字符串?dāng)?shù)組  
  11. string [] DirEntries = Directory.GetDirectories(strDir2List);  
  12. //使用foreach循環(huán)可以對(duì)未知長(zhǎng)度的數(shù)組進(jìn)行遍歷循環(huán)  
  13. foreach(string DirName in DirEntries){  
  14. dr = dtDir.NewRow();  
  15. dr[0] = i;//序號(hào)  
  16. dr[1] = DirName;//文件夾名稱   
  17. dr[3] = "刪除";  
  18. dr[3] = "查看詳情";  
  19. dtDir.Rows.Add(dr);  
  20. i++;   
  21. }  
  22. DataView dvDir = new DataView(dtDir);  
  23. //返回得到的數(shù)據(jù)視圖  
  24. return dvDir;  

ASP.NET虛擬主機(jī)在文件目錄管理時(shí)生成文件數(shù)據(jù)網(wǎng)格(FileGrid)數(shù)據(jù)源的方法:

  1. //通過此方法返回一個(gè)集合形式的數(shù)據(jù)視圖DataView,用來初始化文件的DataGrid  
  2. ICollection CreateDataSourceFile() {  
  3. dtFile = new DataTable();  
  4. DataRow dr;  
  5. dtFile.Columns.Add(new DataColumn("FileID"typeof(Int32)));  
  6. dtFile.Columns.Add(new DataColumn("FileName"typeof(string)));  
  7. dtFile.Columns.Add(new DataColumn("DelFile"typeof(string)));  
  8. dtFile.Columns.Add(new DataColumn("FileDetail"typeof(string)));   
  9. //根據(jù)傳入的參數(shù)(目錄名)得到此目錄下所有文件名的字符串?dāng)?shù)組  
  10. string [] FileEntries = Directory.GetFiles(strDir2List);  
  11. foreach(string FileName in FileEntries){  
  12. dr = dtFile.NewRow();  
  13. dr[0] = i;  
  14. dr[1] = FileName;   
  15. dr[2] = "刪除";  
  16. dr[3] = "查看詳情";  
  17. dtFile.Rows.Add(dr);  
  18. i++;  
  19. }  
  20. dvFile = new DataView(dtFile);  
  21. return dvFile;  
  22. }  

我們編程實(shí)現(xiàn)了兩個(gè)DataSource只需在頁(yè)面的Page_Load方法里對(duì)兩個(gè)DataGrid進(jìn)行數(shù)據(jù)綁定即可將得到的DataTable中的數(shù)據(jù)顯示在aspx頁(yè)面的DataGrid上。

數(shù)據(jù)綁定代碼:

  1. //對(duì)子目錄數(shù)據(jù)列表DirGrid進(jìn)行數(shù)據(jù)源定義和數(shù)據(jù)綁定  
  2. DirGrid.DataSource = CreateDataSourceDir();  
  3. DirGrid.DataBind();   
  4. //對(duì)文件數(shù)據(jù)列表FileGrid進(jìn)行數(shù)據(jù)源定義和數(shù)據(jù)綁定  
  5. FileGrid.DataSource = CreateDataSourceFile();  
  6. FileGrid.DataBind();  

通過我們上邊介紹的主要方法,我們實(shí)現(xiàn)了對(duì)某個(gè)邏輯驅(qū)動(dòng)器或目錄中的所有子目錄和文件進(jìn)行了列表顯示,并且可以根據(jù)顯示結(jié)果更進(jìn)一步的瀏覽子目錄或者查看文件的屬性和內(nèi)容提要。瀏覽子目錄仍然是通過listdir.aspx這個(gè)程序,沒有任何子目錄級(jí)別要求,沒有目錄深度限制。

ASP.NET虛擬主機(jī)在文件目錄管理時(shí)的隱患就向你介紹到這里,希望對(duì)你有所幫助。

【編輯推薦】

  1. ASP.NET調(diào)用存儲(chǔ)過程的含義及好處
  2. ASP.NET應(yīng)用程序資源訪問安全模型淺析
  3. ASP.NET虛擬主機(jī)的重大安全隱患
  4. ASP.NET虛擬主機(jī)之文件系統(tǒng)操作隱患淺析
  5. ASP.NET虛擬主機(jī)在創(chuàng)建數(shù)據(jù)源時(shí)的隱患淺析
責(zé)任編輯:仲衡 來源: iwms
相關(guān)推薦

2009-07-27 16:23:55

ASP.NET虛擬主機(jī)

2009-07-27 16:30:11

ASP.NET虛擬主機(jī)

2009-07-27 15:59:34

ASP.NET虛擬主機(jī)

2009-07-27 15:51:49

ASP.NET虛擬主機(jī)

2009-07-27 15:44:32

ASP.NET虛擬主機(jī)

2009-07-21 15:34:32

ASP.NET 2.0

2009-07-27 10:18:12

TypeResolveASP.NET

2009-07-31 12:43:59

ASP.NET MVC

2009-08-05 15:50:13

ASP.NET優(yōu)點(diǎn)

2009-07-27 15:34:11

MembershipASP.NET

2010-08-06 08:50:21

ASP.NET

2009-07-24 13:41:15

ASP.NET AJA

2009-08-05 18:36:12

ASP.NET Che

2009-07-31 11:45:42

ASP.NET文件下載

2009-07-20 16:09:39

2009-07-21 10:05:10

ASP.NET配置文件

2009-08-10 13:32:15

ASP.NET TimASP.NET組件設(shè)計(jì)

2009-07-22 18:03:00

ASP.NET ASP

2009-07-27 17:00:29

ASP.NET主機(jī)

2009-07-28 10:59:13

ASP.NET IIS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)