微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 如何在file_exists中使用$_GET路径并保证安全?

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

jQuery函数

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

fileExists.PHP

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

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

我担心人们使用这个脚本列出我可能不想让他们知道的服务器或文件内容所以我使用了DOCUMENT_ROOT和/ 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
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐