ASP.NET虚拟主机之文件系统操作隐患浅析 |
本文标签:ASP.NET虚拟主机 ASP.NET虚拟主机之文件系统操作隐患是在我们编写代码之前,有必要了解一下我们需要用到的几个主要的类 。这几个类都在System.IO名称空间下,System.IO 名称空间包含允许在数据流和文件上进行同步和异步读写的类 。 在整个应用程序的开始部分我们需要了解一下服务器的系统信息,这就需要用到System.Environment类,该类提供有关当前环境和平台的信息以及操作它们的方法 。我们通过System.Environment类可以得到系统的当前目录和系统目录,这可以使我们更快的发现几个关键的目录;我们还可以通过获取运行当前进程的用户名来帮助我们了解ASP.NET程序运行所使用的用户,进一步设置用户权限以避免这一安全问题 。 我们还要使用System.IO名称空间的其他几个类是: System.IO.Directory:提供用于创建、移动和枚举通过目录和子目录的静态方法的类 System.IO.File:提供用于创建、复制、删除、移动和打开文件的静态方法的类 System.IO.FileInfo:提供创建、复制、删除、移动和打开文件的实例方法的类 System.IO.StreamReader:实现一个 TextReader,使其以一种特定的编码从字节流中读取字符 。 每个我们所使用的类的属性和方法的具体用法我们将以代码注释的方式在程序中加以说明 。 System.IO名称空间在 .NET FRAMEWORK提供的mscorlib.dll中,在使用VS.Net编程之前需要将此Dll引用到此项目中 。 我们所编写的程序都使用了Codebehind方式,即每一个aspx程序都有一个对应的aspx.cs程序,aspx程序中只是写与页面显示相关的代码,所有逻辑实现的代码都放在相应的aspx.cs文件中,这样就可以更好得做到显示与逻辑的分离 。由于我们的目的不是讨论Codebehind技术,所以就不在对此多加讨论了 。 在这篇文章里,我们只介绍几个主要的类及其关键方法的用法,详细程序请查看附带的源代码 。 程序一:显示服务器的当前信息和全部逻辑驱动器的名称的程序listdrivers.aspx 主要方法1:我们使用 GetSysInf() 方法来得到服务器的当前环境和平台的信息
ASP.NET虚拟主机之文件系统操作隐患在系统信息不需要进行操作,我们简单的用asp:Label将他们显示出来就行了 。逻辑驱动器的个数在不同的服务器上是不定的,所以用不定长数组保存逻辑驱动器的名称,而且逻辑驱动器的名称也是我们下一步浏览目录和文件的基础,故我们采用了数据网格DataGrid来显示和处理它 。 显示和处理逻辑驱动器名称的DataGrid的代码(代码在listdrivers.aspx文件):
前两个BoundColumn列都是显示序号和实际逻辑驱动器名称的,需要说明的是第三列,我们在进入各个逻辑驱动器显示目录和文件之前需要将所选择的逻辑驱动器的名称传递到显示目录的文件去,所以需要一个特殊的超级链接行HyperLinkColumn,我们将DataNavigateUrlField设置为数据源中要绑定到 HyperLinkColumn 中的超级链接的 URL 的字段,在此即逻辑驱动器名称 。然后将DataNavigateUrlFormatString设置为当 URL 数据绑定到数据源中的字段时,此HyperLinkColumn中的超级链接的 URL 的显示格式,即要链接到的下一级处理页面,在此为listdir.aspx?dir={用户点击行的逻辑驱动器名称} ASP.NET虚拟主机之文件系统操作隐患的相关信息就向你介绍到这里,希望对此你有所了解 。 |