黑客能否绕过强制下载PHP文件的.htaccess配置


Can hackers circumvent .htaccess configuration which forces download of PHP files?

我正在尝试建立一个用户可以上传例如.HTML和PHP文件的网站。我想防止黑客查看这些PHP文件(可能是PHP外壳黑客),而是只允许下载它们(如4shared)。但我不确定我的.htaccess文件中的以下代码是否可以解决问题。我的意思是它迫使浏览器下载文件,但是黑客是否有可能克服.htaccess配置并

查看执行PHP文件?
<Files *.php>
    ForceType application/octet-stream
    Header set Content-Disposition attachment
</Files>

视图的意思是执行

看到这个答案。最好的方法是告诉 apache 不要在该目录中执行 PHP,方法是将php_flag engine off添加到上传目录的 .htaccess 文件中。为了防止使用 shell 注入执行,请确保目录中的所有文件都是 chmodded 666。

这个答案假设你的意思是当你说视图时执行。

首先,防止 php 被执行的最安全方法是实际关闭它。正如前面的答案中所建议的那样,php_flag engine off是这样做的一种方法,但据我所知,如果通过fastcgi调用PHP,这可能不起作用。您可以使用 RemoveHandler 指令,但您必须确保捕获已定义 php 的所有文件扩展名,这不一定限于 *.php。

这个答案建议,你应该把以下代码放在你的.htaccess中:

<Files *>
    SetHandler default-handler
</Files>

但仍然存在一个问题:如果您允许人们上传任何文件,他们可以上传自己的 .htaccess 并覆盖您放入的任何内容。

如果您是服务器管理员,则有两种可能的解决方案: 您可以通过根本不包含模块来完全禁用 php,但这意味着您在服务器范围内没有 php,这可能不是您想要的。或者您可以使用AllowOverride None来禁用上传文件夹的 .htaccess 文件,但我认为这仅适用于服务器配置,而不适用于另一个 .htaccess,因此您可以将其放在您的 httpd.conf 中:

<Directory /path/to/your/upload/folder>
        #To ignore uploaded .htaccess:
        AllowOverride None
        <Files *>
                SetHandler default-handler
        </Files>
</Directory>

当然,你必须改变路径。我上面链接的答案提出了一种更广泛的方法,也许你也应该看看。(我知道这里很难看到链接,所以这里是完整的网址,以防万一:使用 .htaccess 禁用目录的所有 CGI(php、perl、...)

因此,如果您不是服务器管理员,那么在用户再次下载文件之前,如果您禁止某些文件类型、文件名或使用所选前缀或后缀重命名每个上传的文件,并在脚本中或使用mod_rewrite删除这些文件,则可能是最安全的。