У меня возникла проблема:
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
И даже если я urlencode URL-адрес, он все равно дает мне 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. благодаря
У вас есть доступ к самому журналу ошибок apache? Если это система cPanel и у вас есть доступ к оболочке, попробуйте просмотреть журнал / usr / local / apache / logs / error_log – там появятся ошибки mod_security. В противном случае вы можете заглянуть внутрь своей панели управления, чтобы узнать, не принимает ли она какие-либо сообщения об ошибках.
Даже если mod_security установлен, вы все равно можете получить ошибку 500 после установки SecFilterEngine в .htaccess, если ключевое слово не разрешено.
Я рекомендую обратиться к вашему веб-хосту, чтобы определить, является ли причина mod_security. Если это так, вы можете попросить их создать исключение. (Я работаю для веб-хостинга, и мы почти всегда рады делать исключения mod_security для разумных приложений)
Если это вызвано mod_security, и ваш веб-хост не создаст исключение, вам либо нужно будет изменить хостинговые компании, либо найти другой способ передачи URL-адреса (для вас может быть использована кодировка base64)
Для меня решение этой проблемы состояло в том, что мой хост (hostgator) создал исключение для mod_security на моем сайте. mod_security используется для черных списков определенных типов операций, и кажется, что $ _GET-запросы, содержащие URL-адреса ( http: //www.etc ), были по какой-либо причине. Как указано lunixbochs, большинство хостов будут рады разобраться в этом.