提问人:GrahamS 提问时间:11/9/2023 更新时间:11/9/2023 访问量:24
检查路径是否解析为 PHP 脚本的子文件夹
Check if path resolves to a subfolder of the PHP script
问:
我们有一个站点,它使用 RewriteRule 将对文件夹的请求更改为对example.org/home/products/widgets/
example.org/home/index.php?path=/products/widgets/
该规则如下所示:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+)/$ ./index.php?path=$1 [NC,QSD,NS]
</IfModule>
然后列出真正位于该文件夹位置的各种文件的详细信息。
(即 存在并包含文件,但我希望将文件夹的请求重定向到索引 .php)index.php
/home/products/widgets/
这有效,但我的问题是:如何可靠地检测/防止某人恶意使用它来访问不是子文件夹的其他文件夹?/home/
现在有人可以偷偷地要求example.org/home/index.php?path=/products/../../secretstuff
我是否需要在 PHP 中使用 realpath()
做一些事情,或者这是我可以在 ?mod_rewrite
答: 暂无答案
评论
/home/index.php?path=/any/path/i/like
realpath
../
FallBackResource
$_SERVER['REQUEST_URI']