阻止PHP中的目录遍历但允许路径我有一条基本路径/任何/foo/和$_GET['path']应该是相对的。然而,我如何做到这一点(读取目录),而不允许目录遍历?例如。/\.\.|\.\./不会正确过滤。
3 回答
白衣非少年
TA贡献1155条经验 获得超0个赞
realpath()
realpath()
/foo/bar/baz/ /foo/bar/baz_baz/
realpath()
$_GET['path']
strpos("/foo/bar/baz_baz", "/foo/bar/baz")
$basepath = '/foo/bar/baz/';$realBase = realpath($basepath);$userpath = $basepath . $_GET['path'];$realUserPath = realpath($userpath);if ($realUserPath === false || strcmp($realUserPath, $realBase) !== 0 || strpos($realUserPath, $realBase . DIRECTORY_SEPARATOR) !== 0) { //Directory Traversal!} else { //Good path!}
智慧大石
TA贡献1946条经验 获得超3个赞
- 3 回答
- 0 关注
- 286 浏览
添加回答
举报
0/150
提交
取消