403 Запрещено при передаче URL в переменной GET - PullRequest
3 голосов
/ 15 июня 2011

У меня такая проблема:
403 Запрещено на странице PHP, вызываемой по URL, закодированному в параметре $ _GET

Я получаю ошибку "403 запрещено" Когда я передаю URL как переменную GET, как это

http://script/test.php?url=https://stackoverflow.com/questions/ask

Но это нормально.

http://script/test.php?url=stackoverflow.com/questions/ask

И даже если я URL-адрес urlencode, он все равно дает мне 403.

Apache mod_fcgid / 2.3.6 mod_auth_passthrough / 2.1 mod_bwlimited / 1.4 FrontPage / 5.0.2.2635 Сервер на ----- порт 80

И я не думаю, что на этом сервере включена mod_security, потому что, когда я добавляю SecFilterEngine Off в htaccess, я получаю «500 Internal Server Error».

Фрагмент кода:

$URL = mysql_real_escape_string($_GET['url']);
mysql_query("INSERT INTO `url` ...");

Итак, вопрос в том, могу ли я это исправить без редактирования httpd.conf, потому что у меня нет привилегий root. Спасибо

Ответы [ 2 ]

5 голосов
/ 15 июня 2011

У вас есть доступ к самому журналу ошибок apache? Если это система cPanel и у вас есть доступ к оболочке, попробуйте просмотреть журнал / usr / local / apache / logs / error_log - там появятся ошибки mod_security. В противном случае вы можете заглянуть внутрь своей панели управления, чтобы увидеть, принимает ли она какие-либо сообщения об ошибках.

Даже если установлена ​​mod_security, вы все равно можете получить ошибку 500 после помещения SecFilterEngine в .htaccess, если ключевое слово не разрешено.

Я рекомендую связаться с вашим веб-хостингом, чтобы определить, является ли mod_security причиной. Если это так, вы можете попросить их создать исключение. (Я работаю в веб-хостинговой компании, и мы почти всегда рады сделать исключения mod_security для приемлемых приложений)

Если это вызвано mod_security и ваш веб-хостинг не создаст исключение, вам нужно либо сменить хостинговую компанию, либо найти другой способ передачи URL-адреса (кодировка base64 может работать для вас)

3 голосов
/ 09 мая 2015

Для меня решение этой проблемы заключалось в том, чтобы заставить мой хост (hostgator) создать исключение для mod_security на моем сайте.mod_security используется для внесения в черный список определенных типов операций, и кажется, что $ _GET-запросы, содержащие URL-адреса (http://www.etc), были единичными по любой причине. Как указано в lunixbochs, большинство хостов будут рады разобраться за вас.

...