1

我有一个文件夹的路径(例如/var/www/tester/assets/themes/default/css/)。

用户可以提供文件夹的相对路径,例如。layout/ie7.css会给出/var/www/tester/assets/themes/default/css/layout/ie7.css.

这很好用,但是我希望用户也能够向上导航目录树。

因此,如果用户提供了 css 文件夹../../cache/css/ie7.css的路径,我希望路径以/var/www/tester/assets/themes/default/cache/css/ie7.css.

我以为我可以将它们一起传递给realpath()例如:

$base = '/var/www/tester/assets/themes/default/css/';
$user_path = '../../cache/css/ie7.css';
$final_path = realpath($base.$user_path);

但这只会返回错误。我怎样才能做到这一点?

4

2 回答 2

1

首先,真正的路径功能还检查给定的路径是否存在......你确定你的路径存在吗?

/var/www/tester/assets/themes/default/css/../../cache/css/ie7.css 

不会结束

/var/www/tester/assets/themes/default/cache/css/ie7.css 

正如你所建议的,但它最终在

/var/www/tester/assets/themes/cache/css/ie7.css 

具有给定文件的此文件夹是否存在?

于 2012-07-13T11:11:40.913 回答
0

只是不要。像这样的路径没有错/var/www/tester/assets/themes/default/css/../../cache/css/ie7.css。它适用于所有操作系统和浏览器。

注意:您是否知道您可能会在此处产生安全风险?如果用户提供../../../../../../../etc/passwd怎么办?

于 2012-07-13T11:36:15.793 回答