gpt4 book ai didi

php - 在 PHP 中防止目录遍历但允许路径

转载 作者:IT王子 更新时间:2023-10-29 01:06:06 26 4
gpt4 key购买 nike

我有一个基本路径/whatever/foo/

$_GET['path'] 应该是相对于它的。

但是如何在不允许目录遍历的情况下完成此操作(读取目录)?

例如。

/\.\.|\.\./

无法正确过滤。

最佳答案

嗯,一种选择是比较真实路径:

$basepath = '/foo/bar/baz/';
$realBase = realpath($basepath);

$userpath = $basepath . $_GET['path'];
$realUserPath = realpath($userpath);

if ($realUserPath === false || strpos($realUserPath, $realBase) !== 0) {
//Directory Traversal!
} else {
//Good path!
}

基本上,realpath()将提供的路径解析为实际的硬物理路径(解析符号链接(symbolic link)、...///等)...因此,如果实际用户路径不是以实际基本路径开始的,则它正在尝试进行遍历。请注意,realpath 的输出将 包含任何“虚拟目录”,例如 ..... .

关于php - 在 PHP 中防止目录遍历但允许路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4205141/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com