PHP权限处理

时间:2010-06-25 07:22:55

标签: php permissions webserver

嘿,所以我正在尝试制作一个PHP图片上传表单。我已经成功地将其关闭,但只能将我上传到777的文件夹的权限,或者读/写/执行。对于大范围的广告网站而言,这并不是一个好主意。我正在使用000webhost,这显然是蹩脚的,但它显然也是最好的免费虚拟主机。我相信我需要做的是以某种方式将运行PHP的任何用户(在000webhost)添加到一个组,然后将该组包含在读/写/执行权限中,但保持其他人的“读取”。但是,我不知道该怎么做。目前我只是通过Filezilla设置权限。我不知道用户在网络服务器上运行PHP是什么,我不知道如何添加该用户以获得单独的组权限....此外,我想我想要一个类似的设置密码文件,只是没有其他人的阅读,所以表格可以使用PHP来检查密码,然后再上传任何内容。 感谢

4 个答案:

答案 0 :(得分:1)

在允许Web服务器对您的系统进行写访问时,您需要非常小心,特别是,您应该确保正在编写的文件夹不能用于将PHP脚本上载到。以下是改善问题的方法:

  1. 为在网络根目录

  2. 之外的上传创建一个文件夹
  3. 将此文件夹添加为虚拟目录

  4. 创建一个拒绝访问此文件夹中所有文件的规则。然后添加一些允许访问特定类型的规则(.gif,.png,.jpg可能)

  5. 在您的上传脚本中,验证文件的类型是否合适(例如图片)以及扩展名是否合适。

  6. 仍然无法保证有人不会以某种方式将恶意PHP脚本上传到此文件夹,但您必须尽可能多地放置保护措施。有一些Apache配置,所以你可能需要做一些挖掘。只是尽量确保最终无法从您的文件夹中执行PHP。

    -phil

答案 1 :(得分:0)

我不确定您的主机如何设置它们,但是可以使用suPHP等内容使用其所有者的权限来执行PHP脚本。这听起来不像你的主人这样做,在这种情况下你不能真正阻止人们搞乱你的文件。文件系统安全性是共享主机的固有问题。如果可能,我建议购买低端VPS(虚拟专用服务器)。

答案 2 :(得分:0)

CHMOD将父文件夹改为0777,然后让PHP调用mkdir()来创建该文件夹。该文件夹的所有者将与PHP进程的所有者相同,您将能够move_uploaded_file()到该文件夹​​。

为了说明,假设您需要上传到文件夹/app/myapp/data/images。然后首先删除文件夹(如果存在),然后删除CHMOD /app/myapp/data/为0777.最后写一个简单的PHP脚本到mkdir('/app/myapp/data/images');

最后不要忘记将父文件夹的权限重置为原始值;)

答案 3 :(得分:0)

对于你想要完成的任务,低端VPS并不是必需的。

您遇到的最大问题是主机处理PHP的方式(suPHP,DSO,CGI,mod_php)。根据它们使用加载的方法,PHP处理器将取决于您的权限的处理方式。

在这种情况下,似乎PHP只是在Apache中作为mod_php运行而没有以User(你自己)的身份运行进程。它只是作为“没人”运行。

你的主机允许这种情况发生这一事实是非常高度不安全的,我非常建议找另一个尝试保护你的数据的网络主机。

一旦找到运行phpSuExec(suPHP)的新Web主机,您就会注意到在权限方面可能会开始使用您的脚本。但是,您将无法再使用777的chmod值。由于安全限制,你能够达到的最高值是755。