>我有一个文件夹的路径(例如 /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);
但这只会返回错误。我该怎么做?
首先,真实路径函数还会检查给定路径是否存在...你确定你的路径存在吗???
/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
包含给定文件的此文件夹是否存在?
只是不要。像/var/www/tester/assets/themes/default/css/../../cache/css/ie7.css
这样的路径没有错.它适用于所有操作系统和浏览器。
注意:您是否知道您可能会在此处造成安全风险?如果用户提供../../../../../../../etc/passwd
怎么办?