如何将 $_GET 路径与 file_exists 一起使用并保证其安全?

2024-04-08

我有一个函数可以通过 jQuery 检查文件是否存在,该函数调用 PHP 脚本,在单击索引页面上的按钮更改某些图像时将使用该脚本。

jQuery 函数:

function fileExists(path){
    $.getJSON("/ajax/fileExists.php",{ path: path },
    function (data){
        return data.path;
    });
}

文件存在.php:

$path=$_SERVER['DOCUMENT_ROOT'].'/packs'.$_GET['path'];

if(file_exists($path)){
    echo json_encode(TRUE);
}else{
    echo json_encode(FALSE);
}

我担心人们使用这个脚本列出我可能不希望他们知道的服务器或文件的内容,所以我使用 DOCUMENT_ROOT 和 /packs 来尝试限制对该目录的调用,但我认为人们可以简单地在提供的路径中使用 ../ 来检查替代方案。

确保安全的最佳方法是什么,最好将其限制为 /packs,还有我应该担心的其他问题吗?

编辑:javascript/jQuery 中的示例调用:

if( fileExists('/index.php') ){
    alert('Exists');
}else{
    alert('Doesn\'t exist');
}

这就是我过去的处理方式:

$path = realpath($_SERVER['DOCUMENT_ROOT'].'/packs'.$_GET['path']);
if (strpos($path, $_SERVER['DOCUMENT_ROOT']) !== 0) {
    //It's looking to a path that is outside the document root
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 $_GET 路径与 file_exists 一起使用并保证其安全? 的相关文章

随机推荐