【问题标题】:PHP: allowing upload of .php files for users, how do I prevent them from running?PHP:允许为用户上传 .php 文件,如何防止它们运行?
【发布时间】:2011-03-05 17:44:21
【问题描述】:

我允许人们上传他们的项目文件,我已经加强了安全性,但我只需要简单点。如何停止执行他们正在上传的子目录中的任何文件?

我在想.htaccess,但我需要为每个新子目录生成一个(我想),我是否需要废弃我当前的代码并使用.php 文件来发送标题以强制 DL文件而不是运行?

您认为对此有什么简单且安全的解决方案?它只是上传到uploads/~foo/bar.html 之类的子目录,这样看起来不错,所以如果能保持这种格式就好了。

【问题讨论】:

  • 为什么投反对票?它可能是重复的,但然后搜索原件并投票关闭。

标签: php security permissions


【解决方案1】:

把这个放到uploads/.htaccess:

RemoveType application/x-httpd-php .php

这适用于所有子文件夹。还要确保您不解析用户文件夹中的 .htaccess。这可以通过主服务器配置中的AllowOverride None 来完成,或者可以通过首先不允许上传 .htaccess 文件来完成。

【讨论】:

  • 非常感谢,我认为并且确实不允许上传 .htaccess,但 allowoverride 会安全地添加我想要的。非常感谢!
  • 实际上,我如何允许这不影响我进入的upload.php?大声笑
  • 其实不用担心!我得到了一个目录,里面什么都没有,我会把脚本放在那里。
  • 那么如果文件名是 ../../backdoor.php 呢?如果您单独执行此操作,则可以绕过它。您还必须检查文件名,它只是 HTTP 请求中的一个变量,可以是任何值。
【解决方案2】:

例如,如果这些上传的文件位于“uploads”目录及其子目录中:

RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_URI} \.php [NC]
RewriteCond %{REQUEST_URI} \/uploads\/
RewriteRule ^(.*)$ index.php [F,L]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    相关资源
    最近更新 更多