是否可以下载具有读取权限的php文件


Is it possible to download php files with read permissions?

好的,所以我不太确定php或服务器端执行的任何其他语言的权限。

据我所知,文件具有以下权限:读取,写入,执行,它们可以组合,例如仅读取和执行,仅写入等等。有三种"类型的用户",所以基本上,需要为每个用户设置读取、写入、执行权限:用户,即:世界。如果我为每个文件设置读取权限为"ON",理论上,我应该能够下载 php 文件,无论我是谁,因为所有用户都可以读取该文件。

在我的本地服务器上做了一个小实验。我有一个名为 a.php 的文件,其中包含以下代码:

<?php
echo 'executed';
?>

我已将其权限设置为 333,即 -r--r--r-。访问该文件的每个人都只能读取它。如果我使用浏览器转到 a.php,我只会看到执行,这是 php 文件回显的结果,而不是整个文本。我不太确定为什么会发生这种情况,并且没有显示所有代码。在某种程度上,这是一件非常好的事情,因为即使您忘记禁用读取权限,黑客也无法看到源代码。

这对我来说是一个迷雾,如果有人能解释为什么会发生这种情况,将不胜感激。谢谢!

唯一需要"执行"权限的情况是老式的CGI脚本。这些实际上是通过代表Web服务器的shell执行的。您的网络服务器访问的所有其他文件只需要"读取"权限。

PHP 脚本不会像程序那样"执行"。Web服务器中的PHP插件将php代码重新导入内存并在那里执行。从来没有一个真正的"php程序"在运行。只要文件是可读的,PHP 就可以加载原始代码,然后解析/执行它。

这是因为Web服务器(Apache,nginx等)。当您"请求"此文件时,它会检查其类型,然后猜测该怎么做。当它看到php时,它会执行它,发送文本/html标头。如果您希望它显示代码,请不要执行它并返回文本/纯文本。

在您的情况下,php解释器(不是浏览器!)读取文件,然后执行它。如果您拒绝读取此文件,则无法执行此操作。