我想在URL中传递查询字符串dir=../../files/
,但我的服务器给了我403禁止错误:
禁止
您无权访问/example.php 在这台服务器上。
此外,尝试时遇到404 Not Found错误 使用ErrorDocument来处理请求。
我在SO上发现了一些问题,但我的问题似乎很奇怪。我使用urlencode()对其进行了编码,结果为example.php?dir=..%2F..%2Ffiles%2F
。期间未编码。
我尝试使用str_replace()将.
替换为%2E
。浏览器自动转换为.
。所以它没有改变结果。
当我从查询字符串中移除第二个../
(..%2F
)时,即example.php?dir=..%2Ffiles%2F
,这没关系。我不明白为什么。所以,我的快速解决方法是明确地用可识别的字符替换.
,但它根本没有意义。
有什么想法吗?
答案 0 :(得分:2)
试试这个:
<?php
echo $encode = base64_encode ('../../files/');
echo '<br/>';
echo $decode = base64_decode ($encode);
//Results:
// Li4vLi4vZmlsZXMv
// ../../files/
?>
修改强>
此dir=../../files/
作为查询字符串无效,因为它违反了URL语法。有关详细信息See Here!