PHP照片上传 - upload_tmp_dir权限

时间:2013-03-04 08:14:17

标签: php linux apache permissions photos

我在apache上使用以下目录进行php.ini照片上传 - redhat / AWS

drwxrwxr-x  2 user2 user2 4096 Mar  4 08:10 datingPhotoUploads

Apache以用户'apache'的形式运行。

如何授予此文件夹权限,以便用户'apache'可以写入,但其他方式尽可能安全?

三江源

2 个答案:

答案 0 :(得分:2)

上传图片(创建文件)文件夹应具有-wx权限。 写作只需要--x(与阅读和执行相同)。 要检查用户php正在运行的用途:<?php echo exec('whoami'); ?>

答案 1 :(得分:2)

通常upload_tmp_dir是/ tmp。这个/ tmp目录作为一些特殊权限(chmod 1777),其中真正特殊的权利是1。这是一个棘手的问题。这意味着,对于目录,只有文件所有者才能删除在此目录中创建的文件,即使任何其他rwx权限似乎适用于文件。

因此,上传存储在apache用户上传的 1777 权限的临时文件夹中的文件意味着只有apache可以删除这些文件。一个很好的起点。

您可以在 datingPhotoUploads 目录中使用此权限。但您也可以尝试使用目录的组所有权(chmod user2:apache; chmod 2770 datingPhotoUploads;)来管理它。这里chmod的770部分意味着对chmod部分的用户和组所有者进行读写和删除。 2表示在此目录中创建的每个文件都与目录具有相同的所有权,因此user2:apache

upload_tmp_dir的主要问题是:

  • apache用户是否可以访问此apache可写目录?如果您不使用/tmp/some/where/datingPhotoUpload,则apache必须能够读取{{1}的目录内容}和/some。因此,对于其他路径,必须为其他人(或者如果apache是​​组所有者的群组)设置x右部分。
  • 这个路径是可用于我的所有php应用程序还是只有正在运行的应用程序?这是/some/where的主要问题,此目录可用于主机上运行的所有PHP应用程序。基于每个应用程序更改upload_tmp_dir可以限制对其他应用程序的访问,特别是如果您对所有php应用程序设置 open_basedir 限制,并且只有当前应用程序允许/tmp /some/where/datingPhotoUpload设置。
  • 此目录的大小是否足够大?请注意大型上传或大量上传。当恶意用户填写此目录时会发生什么?
  • 我确定无法在此目录中执行任何代码吗?在exim数据中上传包含php代码的图片是代码包含攻击的一个例子,你确定这个目录在网络之外吗?服务器目录root?你确定任何针对这个目录的特殊路径都不允许php执行(可能在这个目录上删除php处理程序)?