帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统v4.6
栏 目:
 
您的位置:首页 > 技术文档 > ASP.NET编程 >
ASP.NET虚拟主机的重大安全隐患(2.3)
作者:秦海鹏 发布时间:2005-03-12 来源:ASPCOOL
     程序三:显示文件属性和内容的程序showfile.aspx
  
    在显示属性和内容时需要用到的两个主要的类:
  
    System.IO.FileInfo:提供创建、复制、删除、移动和打开文件的实例方法,并且帮助创建 FileStream 对象。
  
    System.IO.StreamReader:实现一个 TextReader,使其以一种特定的编码从字节流中读取字符。除非另外指定,StreamReader的默认编码为 UTF-8,而不是当前系统的 ANSI 代码页。UTF-8 可以正确处理 Unicode 字符并在操作系统的本地化版本上提供一致的结果。
  
    Showfile.aspx页面主要代码:
  
  <asp:Label id="FileDetail" runat="server"/>
  
    我们只是将文件的属性信息和部分内容显示在此Label上。所以没有其他复杂的代码。
  
    获取文件信息和内容的主要代码都在Page_Load方法中(代码在showfile.aspx.cs文件中):
  
  //接收传入的参数,确定需要操作的文件名称
  strFile2Show = Request.QueryString["file"];
  //根据文件名实例化一个FileInfo对象
  FileInfo fi = new FileInfo(strFile2Show);
  FileDetail.Text = "文件名:";
  FileDetail.Text += strFile2Show+"<br>";
  FileDetail.Text += "文件大小";
  //获得文件的大小,然后变换单位为KB
  FileDetail.Text += (fi.Length/1024).ToString()+"K<br>";
  FileDetail.Text += "创建文件时间:";
  //获得文件的创建日期
  FileDetail.Text += fi.CreationTime.ToString();
  FileDetail.Text += "上次访问时间:";
  //获得文件的上次访问日期
  FileDetail.Text += fi.LastAccessTime.ToString()+"<br>";
  FileDetail.Text += "上次写入时间:";
  //获得文件的上次写入日期
  FileDetail.Text += fi.LastWriteTime.ToString()+"<br>";
  //实例化一个StreamReader对象,用于读取此FileInfo的内容
  StreamReader FileReader = fi.OpenText();
  //定义一个长度为1000的字符数组作为缓冲区
  char[] theBuffer = new char[1000];
  /*ReadBlock方法:从当前流中读取最大数量的字符并从索引开始将该数据写入缓冲区。
  参数:
  char[] buffer:方法返回时,包含指定的字符数组
  int index:buffer 中开始写入的位置
  int count:最多读取的字符数
  */
  int nRead = FileReader.ReadBlock(theBuffer,0,1000);
  FileDetail.Text += new String(theBuffer,0,nRead);
  //关闭此 StreamReader 并释放与之关联的所有系统资源
  FileReader.Close();
  
    到目前为止,我们实现了一个简单的web页面的服务器磁盘管理应用程序,可以查看、删除目录和文件。如果需要修改文件、新建文件和文件夹等功能,只需稍作修改,添加上相应的代码就可以。由于我们只是通过这个程序说明服务器中存在的安全隐患,所以在这里就不再实现这些功能了。
  
    通过这三个简单的程序,我想大家已经能够清楚的认识到这一漏洞的危害性了,如果我们不加防范的话,其他用户的程序就能被恶意使用此功能的用户查看、删除,服务器的系统日志、系统文件也没有任何安全可言了。

  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·ASP.NET虚拟主机的重大安全隐患(  (2005-03-12)
 ·ASP.NET虚拟主机的重大安全隐患(  (2005-03-12)
 ·带你走进ASP.NET(3)  (2005-03-12)
 ·带你走进ASP.NET(2)  (2005-03-12)
 ·带你走进ASP.NET(1)  (2005-03-12)
 ·使用ASP.NET开发移动通讯的几种方  (2005-03-12)
 ·ASP.NET可交互式位图窗体设计(9)  (2005-03-12)
 ·ASP.NET可交互式位图窗体设计(8)  (2005-03-12)
 ·ASP.NET可交互式位图窗体设计(7)  (2005-03-12)
 ·ASP.NET可交互式位图窗体设计(6)  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·帝国网站管理系统采集使用教程
·帝国网站管理系统模板制作教程
·帝国CMS模板下载
·Discuz6.0.1UC版通行证发布
·帝国网站管理系统之网站迁移教程
·帝国网站管理系统实例入门教程下载
·《帝国网站管理系统》实例入门教程
   类别最新
·ASP.NET中为DataGrid添加合计字段
·.text urlRewrite介绍
·利用 ASP.NET 的内置功能抵御 Web
·ASP.NET Cache
·用 WebClient.UploadData 方法 上载
·ASP.NET 程序设计-序
·什么是客户端/伺服端(Client/Serve
·因特网应用程序的开发
·网页的种类
·.NET Framework-Microsoft Visual
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统