Невозможно передать URL в PHP GET - PullRequest
1 голос
/ 01 августа 2011

При переходе на 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 Запрещено.

Но я получаю ошибку: Invalid command 'SecFilterEngine', perhaps misspelled or defined by a module not included in the server configuration

Ответы [ 2 ]

0 голосов
/ 09 мая 2012

Если вы получаете сообщение об ошибке: «Неверная команда« SecFilterEngine », возможно, с ошибкой или определена модулем, который не включен» *

Это потому, что вы не включили «: LoadModule security_module modules / mod_security.so»в httpd.conf.

Другая возможная причина заключается в том, что вы используете mod_security2, а SecFilterEngine устарел, и вы должны перенести его в SecRuleEngine, как описано в документе о миграции.

http://www.modsecurity.org/documentation/ModSecurity-Migration-Matrix.pdf

0 голосов
/ 01 августа 2011

Вот решение в PHP.

Вы можете сохранить кодирование дважды и декодировать дважды

<?php 
echo rawurldecode(rawurldecode("http://foo.com/bar.php?url=http%253A%252F%252Ffoobar.com%252F"));
...