是否可以读取PHP文件file_get_contents



我创建了从url get请求加载(只是css,js)的网页。我以前对include这样做过,但这是危险的,因为黑客可以包含不是来自public_html的文件。我在file_get_contents上尝试过,它说错误的请求,这是完美的,但我想确定,因为实际上我听说file_get_content s是危险的?我不想帮助黑客读取php文件,因为我听说这是可能的file_get_contents ?

file_get_contents()可能是危险的,如果您使用用户提供的数据作为参数并打印其输出。恶意用户可能会使用/etc/passwd读取所有服务器的用户名。或者,他/她可以用'…’作为文件名的一部分来访问文件,即使你在文件名前加上了允许的路径(例如。". ./. ./etc/passwd)

为了防止这种情况发生,您应该始终检查用户给定值的有效性,例如,文件名或路径是否在文件系统的预期部分,因此只访问您希望用户访问的文件。PHP有一个函数来生成相对路径(或包含符号链接的路径)"真实"的: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');
}

相关内容

  • 没有找到相关文章

最新更新