可以用 file_get_contents 读取 php 文件吗?

is it possible to read php file with file_get_contents?

我创建了从 url 加载(仅 css,js)的网页,得到 request.I 之前用 include 这样做过,但这很危险,因为黑客可以包含文件这不是来自 public_html。我在 file_get_contents 上试过这个,它说错误的请求是完美的,但我想确定,因为实际上我听说 file_get_contents 是危险的?我不知道不想帮助黑客阅读 php 文件,因为我听说 file_get_contents?

是可能的
如果您使用用户提供的数据作为参数并打印其输出,

file_get_contents() 可能是危险的。恶意用户然后可以使用例如/etc/passwd 读取您服务器的所有用户名。或者,he/she 可以使用“..”作为文件名的一部分来访问文件,即使您在名称前加上允许的路径(例如“../../etc/passwd”)

为防止这种情况发生,您应该始终检查用户给定值的有效性,例如,文件名或路径是否在文件系统的预期部分,因此只访问您希望用户访问的文件访问。 PHP 有制作相对路径(或包含符号链接的路径)的功能 'real': realpath().

创建路径后 'real' 您可以检查路径是否在文件系统的预期部分,然后安全地将其用于 file_get_contents()

$wanted = $_GET['path'];
$real = realpath('/var/www/user/accessible/' . $wanted);
if (strpos($real, '/var/www/user/accessible/') === 0) {
   echo file_get_contents($real);
} else {
   throw new Exception('not allowed to access this file');
}