1

我正在制作一个文件共享网站,我允许页面的视觉和功能部分工作。当我想允许上传像 php 页面这样的服务器端脚本时,这会遇到问题。这个 php(等)页面可以轻松地反向链接和删除我显然不想要的文件。我已经多次更改权限进行测试,但这也阻止了我的 php 文件上传和重命名文件到这些文件夹。我确实想允许这些文件类型,但我不确定我能做什么。

我在想我可以通过 .htaccess 做到这一点,但我不知道怎么做。

有什么建议么?

4

3 回答 3

3

我不确定,但听起来你想允许任意文件上传(包括 .PHP 脚本),但要防止它们中的任何一个在服务器端执行。

我建议创建一个不可通过网络访问的文件存储目录(例如,将其放在您的 www-root 之外或使用 .htaccess 文件来限制直接访问)。然后让您的 PHP 脚本上传到该目录。创建一个下载脚本并通过该脚本对这些文件进行下载访问,这样就无法远程调用例如 PHP 文件。

于 2013-01-09T18:45:28.843 回答
1

我认为这与权限无关,而是 php 执行。您可以使用 .htaccess 文件关闭目录上的 php 引擎,如下所示:

<IfModule mod_php5.c>
    php_flag engine off
</IfModule>
于 2013-01-15T01:08:31.610 回答
1

如果我从阅读评论中理解正确:

您希望用户能够上传任何文件。包括代码。包括.php、.asp 等。您希望用户能够执行此代码,但要将代码限制在“沙盒”环境中。

在我看来,您应该将文件写入特定位置,该位置具有自己的文档 root/vhost (http://exec.domain.tld)。

在该虚拟主机上,您可以设置安全性,即:

AllowOverride None # disable rewriting and such
php value disable_functions dl,exec,passthru,system,shell_exec,popen # disable functions

最重要的是(!重要)为 vhosts 文档根目录设置 basedir 限制

<Directory /srv/www/exec.domain.tld/docroot>
  php_admin_value open_basedir /srv/www/exec.domain.tld/docroot 
</Directory>

我还没有实际设置这个环境,但我觉得这是你最好的起点。而且我确实认为它会起作用,如果您修复我可能犯的错字/参数名称错误:)

于 2013-01-18T14:54:39.593 回答