【发布时间】:2015-05-17 11:24:25
【问题描述】:
我想在 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,没关系。我不明白为什么。因此,我的快速解决方法是将. 明确替换为可识别的字符,但这根本没有意义。
有什么想法吗?
【问题讨论】:
-
只要在 url 中添加斜线,它将被视为路径分隔符而不是查询数据。
-
嗯.. 斜线转换为
%2F。我认为这应该不是问题。 -
你试过
base64_encode吗?
标签: php apache url encoding query-string