即使没有可执行权限也执行php文件

时间:2019-01-22 11:58:32

标签: php permissions

在网站上,我为用户提供了上传文件的选项(以后再下载)。

我上传了一个location /gis { alias /var/www/gis; index index.html; } 文件,很惊讶我仅通过在浏览器中输入网址就能执行该文件。

我对文件的权限非常严格。我不希望用户执行他们上传的脚本。这是相关的hack.php输出:

ls -la

如果我严格限制了上载文件的权限,则为:

-rwxr----- user apache hack.php

与用户无法下载文件相比,因为apache无法读取文件。

整个情况对我来说似乎很奇怪。我没有给-rwx------ user apache hack.php 赋予可执行权限,但是我仍然可以执行而没有任何麻烦。我在这里想念什么?

简而言之,主要目标是禁止执行任何上传到服务器的任何文件。

3 个答案:

答案 0 :(得分:1)

PHP文件本身不是可执行文件。实际上,要执行它,您需要一个PHP解释器,该解释器将仅读取文件,解析并执行。因此,从操作系统的角度来看,无需对.php文件具有可执行权限。只需要读取权限。

答案 1 :(得分:1)

php文件由网络服务器执行-与文件本身的可执行标志无关。

要防止出现此问题,请将上传的文件存储在单独的文件夹中(最好不要直接通过浏览器访问)。

现在,根据所使用的网络服务器,您可以为此文件夹/路径禁用php文件的执行

对于Apache,您可以使用以下内容在上传文件夹中创建.htaccess

php_flag engine off

答案 2 :(得分:1)

您不需要将文件存储在公用文件夹中,可以将文件存储在受限区域中,然后读取文件并动态写入输出而无需运行它。您还可以设置新的文件扩展名。

类似的东西:php restrict access to files in directory