清理 PHP 中的文件路径

2022-08-30 14:30:23

我希望使我的小程序安全,以便潜在的恶意用户无法查看服务器上的敏感文件。

    $path = "/home/gsmcms/public_html/central/app/webroot/{$_GET['file']}";


    if(file_exists($path)) {
        echo file_get_contents($path);
    } else {
        header('HTTP/1.1 404 Not Found');
    }

在我的头顶上,我知道诸如'...的输入。/../../../../../etc/passwd'会很麻烦,但想知道我应该期待哪些其他恶意输入以及如何防止它们。


答案 1

realpath() 将允许您将任何可能包含相关信息的路径转换为绝对路径...然后,您可以确保路径位于要允许从中下载的某个子目录下。


答案 2

使用 basename,而不是尝试预测用户可能提供的所有不安全路径。


推荐