转到http://foo.com/bar.php?url=http://foobar.com/
时出现403 Forbidden
错误。
如果我对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。
但是,我接到错误:Invalid command 'SecFilterEngine', perhaps misspelled or defined by a module not included in the server configuration
答案 0 :(得分:0)
这是PHP中的solution。
您可以将其编码两次并将其解码两次
<?php
echo rawurldecode(rawurldecode("http://foo.com/bar.php?url=http%253A%252F%252Ffoobar.com%252F"));
答案 1 :(得分:0)
如果您收到错误: “无效命令'SecFilterEngine',可能拼写错误或由未包含的模块定义”
这是因为你没有在httpd.conf中包含“:LoadModule security_module modules / mod_security.so”。
另一个可能的原因是您正在使用mod_security2并且SecFilterEngine已过时,您应该将其迁移到SecRuleEngine,如迁移文档中所述。
http://www.modsecurity.org/documentation/ModSecurity-Migration-Matrix.pdf