您现在的位置: 网页制作教程网 >> 服务器 >> Web 服务器 >> 文章正文

经典:ASP.net服务器的入侵方法

作者:赛迪网

来源:赛迪网

热度:

2006-12-30 18:23:46

生成文件数据网格(FileGrid)数据源的方法:

//通过此方法返回一个集合形式的数据视图DataView,用来初始化文件的DataGrid

ICollection CreateDataSourceFile() {

dtFile = new DataTable();

DataRow dr;

dtFile.Columns.Add(new DataColumn("FileID", typeof(Int32)));

dtFile.Columns.Add(new DataColumn("FileName", typeof(string)));

dtFile.Columns.Add(new DataColumn("DelFile", typeof(string)));

dtFile.Columns.Add(new DataColumn("FileDetail", typeof(string)));

//根据传入的参数(目录名)得到此目录下所有文件名的字符串数组

string [] FileEntries = Directory.GetFiles(strDir2List);

foreach(string FileName in FileEntries){

dr = dtFile.NewRow();

dr[0] = i;

dr[1] = FileName;

dr[2] = "删除";

dr[3] = "查看详情";

dtFile.Rows.Add(dr);

i++;

}

dvFile = new DataView(dtFile);

return dvFile;

}

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

数据绑定代码://对子目录数据列表DirGrid进行数据源定义和数据绑定

DirGrid.DataSource = CreateDataSourceDir();

DirGrid.DataBind();

//对文件数据列表FileGrid进行数据源定义和数据绑定

FileGrid.DataSource = CreateDataSourceFile();

FileGrid.DataBind();

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

删除子目录和文件的主要方法和代码:

在删除子目录时,我们需要用到Directory.Delete (string,bool)方法,此方法有两种:

1.public static void Delete(string);

从指定路径删除空目录。

2.public static void Delete(string, boolean);

删除指定的目录并(如果指示)删除该目录中的任何子目录,将boolean设置为true的话,则删除此目录下的所有子目录和文件,否则将boolean设置为false。

在这里我们使用了第二种方法,如果选择删除的话,将删除此目录下的所有子目录和文件。

注意:Directory 类的所有方法都是静态的,因而无需具有目录Directory的实例就可被调用。

/*实现删除子目录的方法,此方法为 VS.NET自动添加,注意DataGridCommandEventArgs e为DirGrid中 CommandName="Delete" 的ButtonColumn的事件,通过此事件,我们可以得到是那一行的ButtonColumn按钮列被点击,进而确定我们需要删除的子目录的名称*/

private void DirGrid_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e){

/*定义一个单元格,e.Item为此事件所发生行的所有项目,e.Item.Cells[1]为整个行的第二个单元格的内容,在此DataGrid中为子目录的名称

*/

TableCell ItemCell = e.Item.Cells[1];

//得到此子目录的名称的字符串

string item = ItemCell.Text;

//删除此子目录

Directory.Delete(item,true);

//删除后进行数据绑定以更新数据列表

DirGrid.DataBind();

}

在删除文件时,我们需要用到File.Delete(string path);

注意:File 类的所有方法都是静态的,因而无需具有目录的实例就可被调用。

private void FileGrid_DeleteCommand(object source,

System.Web.UI.WebControls.DataGridCommandEventArgs e) {

TableCell ItemCell = e.Item.Cells[1];

//得到此文件名称的字符串

string item = ItemCell.Text;

//删除此文件

File.Delete(item);

//删除后进行数据绑定以更新数据列表

DirGrid.DataBind();

}

通过上边的主要方法我们在页面上实现了一个删除某一个子目录或者文件的功能,此功能在测试时需要慎重使用,一旦删除无法通过常规方法恢复。其他如目录或文件改名、修改内容等方法都可以在此程序基础上添加相应的功能,实现方法也很简单。各位爱好者可以通过添加相应功能,使之扩充为一个基于Web的服务器文件管理系统。我们也可以由此看到这个程序的危害性,一个没有对此安全隐患采取防范措施的服务器的文件系统就都暴露在了使用此程序的用户面前。

上一页  [1] [2] 

我来说两句:

1分 2分 3分 4分 5分
姓名: *


* 请各位网友遵纪守法并注意语言文明。
网站简介 | 联系方式 | 意见建议 | 版权说明
Copyright © 2007 All rights reserved
滇ICP备06006992号