无法在PHP GET中传递URL
当转到无法在PHP GET中传递URL,php,apache,.htaccess,get,Php,Apache,.htaccess,Get,当转到http://foo.com/bar.php?url=http://foobar.com/我收到了一个403禁止的错误。 如果我将URL编码为:http://foo.com/bar.php?url=http%3A%2F%2Ffoobar.com%2F 但是如果我对它编码两次,它就会工作:http://foo.com/bar.phpurl=http%253A%252F%252Ffoobar.com%252F 我知道我能做到,但这真的很烦人 我已尝试将以下行添加到.htaccess:SecFi
http://foo.com/bar.php?url=http://foobar.com/
我收到了一个403禁止的
错误。
如果我将URL编码为:http://foo.com/bar.php?url=http%3A%2F%2Ffoobar.com%2F
但是如果我对它编码两次,它就会工作:http://foo.com/bar.phpurl=http%253A%252F%252Ffoobar.com%252F
我知道我能做到,但这真的很烦人
我已尝试将以下行添加到.htaccess:SecFilterEngine Off
无论是bar.php
存在还是为空,它仍然会显示403 Forbbidden
但是,我得到了一个错误:无效的命令'SecFilterEngine',可能拼写错误或由服务器配置中未包含的模块定义
你可以对它进行两次编码和两次解码
<?php
echo rawurldecode(rawurldecode("http://foo.com/bar.php?url=http%253A%252F%252Ffoobar.com%252F"));
如果出现错误:
命令“SecFilterEngine”无效,可能拼写错误或由未包含的模块定义
这是因为您没有在httpd.conf中包含“:LoadModule security\u module modules/mod\u security.so”
另一个可能的原因是您正在使用mod_security2,而SecFilterEngine已经过时,您应该将其迁移到SecRuleEngine,迁移文档中对此进行了解释
您是否有指向httpd.conf或.htaccess的链接?你确定你的mod_security.c加载了正确的参数吗?你的具体问题是什么?你想做什么?请在你的问题中添加bar.php
的代码。我没有该网站的root访问权限,所以我甚至不知道我是否有mod_security@Tyilo:看看我的答案…@hakre:bar.php的代码一点都不重要。在问题中,OP指定bar.php是否存在并不重要。