ASP.NET虚拟主机在文件目录管理时的隐患浅析
创始人
2024-04-21 05:21:12
0

ASP.NET虚拟主机在文件目录管理时的隐患是什么么?首先让我们看一个实例,显示目录中所有子目录和文件的程序listdir.aspx

目录下有子目录和文件两种形式,必须分别对待。我们调用此程序本身对子目录进行列表显示,而文件我们需要调用showfile.aspx程序对文件的属性和内容进行显示。并且两者还有不同的删除方法,所以我们在这里设置了两个DataGrid,两个DataTable,两个DataView,分别处理和显示目录和文件。

ASP.NET虚拟主机在文件目录管理时显示和处理目录和文件的DataGrid的代码(代码在listdir.aspx文件):

显示目录或文件的序号和名称的数据列类似于listdrivers.aspx程序中的相应代码,这里就不再重复了。对于子目录和文件分别有各自的处理页面,所以需要导航到两个不同的页面,对于子目录,我们继续使用listdir.aspx程序对其下的子目录和文件进行列表显示:

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

对于文件,我们使用showfile.aspx程序显示其属性和内容:

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

在两个DataGrid(DirGrid,FileGrid)中我们分别设置了两个HyperLinkColumn列来导航到不同的处理页面。

ASP.NET虚拟主机在文件目录管理时在两个DataGrid中我们都使用了一个删除的按钮列:

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

由于添加、更新、删除功能列都是DataGrid的默认模板列,所以可以在Vs.net中通过DataGrid的属性生成器自动添加此列。

获取上一页面所传递来的参数的代码:

因为在下面产生数据源的方法中需要使用由上一个页面传递过来的参数来确定目录和文件的名称,所以在页面的Page_Load方法里使用了下列代码:

strDir2List = Request.QueryString["dir"];

字符串strDir2List即传过来的目录名或文件名。

因为我们使用了两个DateGrid,就需要进行两次数据绑定,就有两个不同的生成数据源的方法。

生成目录数据网格(DirGrid)数据源的方法:

  1. //通过此方法返回一个集合形式的数据视图DataView,用来初始化子目录的DataGrid  
  2. ICollection CreateDataSourceDir() {  
  3. dtDir = new DataTable();  
  4. DataRow dr;  
  5. //向DataTable中添加新的数据列,共四列  
  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. //根据传入的参数(目录名)得到此目录下所有子目录名的字符串数组  
  11. string [] DirEntries = Directory.GetDirectories(strDir2List);  
  12. //使用foreach循环可以对未知长度的数组进行遍历循环  
  13. foreach(string DirName in DirEntries){  
  14. dr = dtDir.NewRow();  
  15. dr[0] = i;//序号  
  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. //返回得到的数据视图  
  24. return dvDir;  

ASP.NET虚拟主机在文件目录管理时生成文件数据网格(FileGrid)数据源的方法:

  1. //通过此方法返回一个集合形式的数据视图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. //根据传入的参数(目录名)得到此目录下所有文件名的字符串数组  
  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. }  

我们编程实现了两个DataSource只需在页面的Page_Load方法里对两个DataGrid进行数据绑定即可将得到的DataTable中的数据显示在aspx页面的DataGrid上。

数据绑定代码:

  1. //对子目录数据列表DirGrid进行数据源定义和数据绑定  
  2. DirGrid.DataSource = CreateDataSourceDir();  
  3. DirGrid.DataBind();   
  4. //对文件数据列表FileGrid进行数据源定义和数据绑定  
  5. FileGrid.DataSource = CreateDataSourceFile();  
  6. FileGrid.DataBind();  

通过我们上边介绍的主要方法,我们实现了对某个逻辑驱动器或目录中的所有子目录和文件进行了列表显示,并且可以根据显示结果更进一步的浏览子目录或者查看文件的属性和内容提要。浏览子目录仍然是通过listdir.aspx这个程序,没有任何子目录级别要求,没有目录深度限制。

ASP.NET虚拟主机在文件目录管理时的隐患就向你介绍到这里,希望对你有所帮助。

【编辑推荐】

  1. ASP.NET调用存储过程的含义及好处
  2. ASP.NET应用程序资源访问安全模型浅析
  3. ASP.NET虚拟主机的重大安全隐患
  4. ASP.NET虚拟主机之文件系统操作隐患浅析
  5. ASP.NET虚拟主机在创建数据源时的隐患浅析

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...