PHP保护文件系统的具体代码分享
创始人
2024-06-12 14:01:34
0

文件系统对于任何一个站点来说都是相当重要的,程序员们都在不遗余力的保护着自己的系统不受侵犯。今天我们就为大家讲解了PHP保护文件系统的具体代码示例。曾经有一个 Web 站点泄露了保存在 Web 服务器的文件中的客户数据。该 Web 站点的一个访问者使用 URL 查看了包含数据的文件。虽然文件被放错了位置,但是这个例子强调了针对攻击者保护文件系统的重要性。

#t#如果 PHP 应用程序对文件进行了任意处理并且含有用户可以输入的变量数据,请仔细检查用户输入以确保用户无法对文件系统执行任何不恰当的操作。清单 1 显示了下载具有指定名的图像的 PHP 站点示例。

  1.    
  2. if ($_POST['submit'] == 'Download') {   
  3.     $file = $_POST['fileName'];   
  4.     header("Content-Type: application/x-octet-stream");   
  5.     header("Content-Transfer-Encoding: binary");   
  6.     header("Content-Disposition: attachment; filename=\"" . $file . "\";" );   
  7.     $fh = fopen($file, 'r');   
  8.     while (! feof($fh))   
  9.     {   
  10.         echo(fread($fh, 1024));   
  11.     }   
  12.     fclose($fh);   
  13. } else {   
  14.     echo("<");   
  15.         echo("title>Guard your filesystem");   
  16.     echo(" id=\"myFrom\" action=\"" . $_SERVER['PHP_SELF'] .   
  17.         "\" method=\"post\">");   
  18.     echo("
     type=\"text\" name=\"fileName\" value=\"");   
  19.     echo(isset($_REQUEST['fileName']) ? $_REQUEST['fileName'] : '');   
  20.     echo("\" />");   
  21.     echo(" type=\"submit\" value=\"Download\" name=\"submit\" />
");   
  •     echo("");   
  • }  
  • 正如您所见,清单 1 中比较危险的脚本将处理 Web 服务器拥有读取权限的所有文件,包括会话目录中的文件(请参阅 “保护会话数据”),甚至还包括一些系统文件(例如 /etc/passwd)。为了进行PHP保护文件系统演示,这个示例使用了一个可供用户键入文件名的文本框,但是可以在查询字符串中轻松地提供文件名。

    同时配置用户输入和文件系统访问权十分危险,因此最好把应用程序设计为使用数据库和隐藏生成的文件名来避免同时配置。但是,这样做并不总是有效。清单 2 提供了验证文件名的示例例程。它将使用正则表达式以确保文件名中仅使用有效字符,并且特别检查圆点字符:..。

    1. function isValidFileName($file) {   
    2.     /* don't allow .. and allow any "word" character \ / */   
    3.     return preg_match('/^(((?:\.)(?!\.))|\w)+$/', $file);   

    以上就是本文为大家分享的PHP保护文件系统的具体代码编写。

    相关内容

    热门资讯

    如何允许远程连接到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...