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

pot*_*ato 1 php permissions

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

我上传了一个hack.php文件,令我惊讶的是我只需在浏览器中输入网址即可执行它。

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

-rwxr----- user apache hack.php
Run Code Online (Sandbox Code Playgroud)

如果我将上传文件的权限收紧为:

-rwx------ user apache hack.php
Run Code Online (Sandbox Code Playgroud)

用户无法下载该文件,因为 apache 无法读取它。

整个情况对我来说似乎很奇怪。我没有授予hack.php可执行权限,但我仍然可以毫无问题地执行。我在这里缺少什么?

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

Kar*_*ski 5

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