Коды ответа сервера 4хх сообщают о проблеме с доступом к странице на стороне клиента.
Код ошибки 403 (Forbidden) обычно появляется, если сервер получил и понял запрос, но не может отдать браузеру код страницы, потому что доступ к ней запрещен.
Текст ошибки может быть разным:
Error access denied;
Отказано в доступе;
You don’t have permission to access;
Access is denied;
Forbidden: Access is denied;
403. That’s an error;
403 Forbidden – nginx;
HTTP Status 403 – Access is denied;
Access is denied. You are unable to access sitename.com
…и другие варианты, но суть одна — пользователь не может зайти на страницу.
Почему появляется ошибка 403
Обычно ошибка с кодом 403 возникает, когда на страницу пытается попасть пользователь, у кого не должно быть туда доступа. Например, посетитель не авторизовался и по прямой ссылке перешел в настройки личного кабинета. Или какая-то из страниц админки по ошибке попала в индекс, но перейти на нее можно только со специальными правами.
В основном это или результат прямого запрета от администратора сайта, или ошибка, из-за которой пользователи пытаются зайти туда, куда не должны.
На самом деле причин может быть больше — со стороны самого пользователя, со стороны сайта или даже хостинга.
Какие запреты могут вызвать ошибку 403:
Администратор сайта установил ограничение для обычных пользователей;
Пользователь не залогинился и пытается зайти на страницу для тех, кто авторизован;
Администратор заблокировал доступ для определенного пользователя;
На страницу нельзя зайти из-за технических работ на ней;
Доступ к ресурсу ограничил интернет-провайдер, администратор сети или хостинг;
На страницу не пускает антивирус;
Возникла ошибка при назначении прав доступа к файлам;
Файлы сайта находятся не в корневой директории;
Неверный формат индексного файла;
Проблемы с работой скриптов на сайте и многие другие причины.
Разберем все случаи детально.
Ошибки со стороны пользователя
Пользователь не зарегистрирован или не авторизован
Пользователь может попытаться зайти на страницу, которая требует входа в личный кабинет, по прямой ссылке. Решение простое — зарегистрироваться или выполнить вход.
Пользователь ввел неправильный URL-адрес
Ошибка аналогична предыдущей. На самом деле это проблема владельца сайта — не проработан UX. Пользователи не должны переходить на страницы, которые для них закрыты, и сталкиваться с ошибками.
Если проблема в авторизации, посетитель в итоге должен попасть на форму входа:
Это можно сделать через редирект:
Убедиться, что редиректы настроены правильно, можно в бесплатном инструменте Проверка ответа сервера
Запрет на доступ по конкретному IP или диапазону адресов
Так бывает, если вы заходите на сайт через VPN. Отключите его и посмотрите, получится ли зайти — на сервере сайта может работать блокировка определенной страны или региона. Или обратная ситуация, когда без VPN на сайт попасть нельзя.
Также может возникнуть проблема с сетью Wi-Fi, к которой вы где-то подключились, например, с мобильного телефона — попробуйте отключить Wi-Fi и зайти через мобильный интернет.
Неактуальные данные в cookies
Если вы — пользователь, который не может зайти на страницу, попробуйте почистить cookies. Это текстовые файлы, в которых браузер хранит информацию о посещенных сайтах: логины и пароли, языковую версию, регион и другие настройки. Если сохраненные данные устарели, могут возникнуть проблемы со входом на сайт. Иногда помогает вход через другой браузер.
Например, в браузере Chrome зайдите в настройки, выберите «Конфиденциальность и безопасность» и «Настройки сайта».
Кликните на «Посмотреть текущие разрешения и сохраненные данные сайтов». В открывшемся списке выберите нужный сайт. Удалите куки.
Проблема данных в кэше
То же самое можно сделать и для кеша. В кеше хранятся копии страниц, чтобы при повторном посещении они не загружались заново.
Инструкция по удалению кеша конкретного сайта для Chrome:
- Кликните по странице правой кнопкой и выберите «Просмотреть код» — у вас откроется инструмент разработчика.
- Потом правой кнопкой нажмите на значок перезагрузки и выберите «Очистка кеша и жесткая перезагрузка».
Еще один способ устранения ошибки кеша — обновить страницу с помощью Ctrl + F5. Так страница загружается напрямую, без учета кэша браузера.
Проблема из-за антивируса или брандмауэра
Антивирусы могут блокировать доступ к определенным сайтам, иногда по ошибке. Если уверены, что ресурс безопасен, отключите антивирус и зайдите на страницу снова.
Если ничего из этого не сработало, но очень нужно попасть на страницу, напишите в техподдержку, потому что проблема может быть со стороны сайта — об этом ниже.
Ошибки со стороны сайта
Если вы — владелец или администратор сайта, сначала разберитесь, на чьей стороне проблема. Зайдите как обычный пользователь, посмотрите, все ли работает так, как должно. Проверьте работу сайта в режиме инкогнито. Если есть ошибка, ниже рассказываем о нескольких ее причинах и способах решения.
Ошибки в индексном файле
Индексный файл — это файл, указывающий на главную страницу домена или поддомена, веб-сервер использует его как индекс для каталога сайта. Для пользователя это выглядит как главная страница, если он не прописал в адресной строке путь к одной из внутренних.
Например, для www.sitename.ru/ веб-сервер проверяет корневой каталог сайта на наличие своего индексного файла, а для www.sitename.ru/blog/ — каталог «blog».
Обычно это HTML-файл, его название определяется CMS. Варианты: Index.html, index.htm или index.php, серверы Microsoft IIS используют название default.htm.
Веб-сервер автоматически ищет индексный файл, если в URL указан каталог, а не конкретный файл. Если ни один из указанных файлов не найден на сервере, может появиться автоматически сформированный список файлов в каталоге или сообщение об ошибке доступа 403.
Чтобы устранить ошибку, убедитесь, что индексный файл находится в правильной папке, имеет корректное название и формат согласно настройкам CMS или серверного ПО. Если вы используете дополнительные инструменты, такие как .htaccess, стоит проверить их конфигурацию на предмет возможных конфликтов с индексным файлом.
Что еще нужно учесть:
Проверка прав доступа к файлам и папкам
Ошибка 403 может возникнуть из-за неправильных прав доступа к индексному файлу или к каталогу, где он лежит. Убедитесь, что файлы имеют соответствующие разрешения на чтение и выполнение для веб-сервера.
Проверка наличия дополнительных файлов
В некоторых случаях ошибка 403 может возникать из-за отсутствия самого индексного файла или его дополнительных файлов, например, изображений или стилей. Убедитесь, что все эти файлы находятся в соответствующих папках.
Ошибка в правах доступа
Ошибка 403 Forbidden может возникнуть из-за проблем с правами доступа к файлам и папкам на сервере. Права доступа определяют, кто может просматривать, изменять или выполнять файлы и папки на сервере. Вот подробнее, как это работает и как это связано с ошибкой 403:
Права доступа к файлам и папкам:
У каждого файла и папки на сервере есть уникальные права доступа. Эти права представлены трёхзначным числом от 0 до 7, где каждая цифра отвечает за определенные права:
Первая цифра: права владельца файла или папки.
Вторая цифра: права для группы пользователей, к которым относится файл или папка.
Третья цифра: права для всех остальных пользователей, кто не владелец файла и не входит в указанную группу.
Ошибки при назначении прав доступа:
Если у пользователя или группы пользователей отсутствуют необходимые права на выполнение определенного действия с файлом или папкой, сервер может вернуть ошибку 403 Forbidden.
Например, если папка имеет права доступа 755, это означает, что владелец имеет полный доступ (7), а группа пользователей и все остальные имеют только право на чтение и выполнение (5). Если пользователь попытается выполнить действие, требующее записи в эту папку, и у него нет соответствующих прав, он получит ошибку 403.
Для исправления проблемы с ошибкой 403 Forbidden нужно изменить права доступа к файлам и папкам на сервере. Это можно сделать с помощью команды chmod в командной строке или через файловый менеджер хостинга.
Выдача прав доступа к файлу:
chmod 644 имя_файла #Эта команда устанавливает следующие права доступа: #Владелец файла имеет права на чтение и запись (6) #Группа, к которой принадлежит файл, имеет права на чтение (4) #Остальные пользователи также имеют права на чтение (4)
Выдача прав доступа к папке:
chmod 755 имя_папки #Эта команда устанавливает следующие права доступа: #Владелец папки имеет права на чтение, запись и выполнение (7) #Группа, к которой принадлежит папка, имеет права на чтение и выполнение (5) #Остальные пользователи также имеют права на чтение и выполнение (5)
Важно убедиться, что пользователи, которым нужен доступ, имеют соответствующие права для выполнения нужных действий.
Проблемы с плагинами
Проблемы с плагинами могут стать причиной ошибки 403 на сайте. Например, на WordPress плагины добавляют новые возможности, такие как формы обратной связи, галереи изображений, функции безопасности и многое другое.
Возможные проблемы:
Ошибка 403 может быть вызвана некорректной работой одного или нескольких плагинов.
Это может произойти по разным причинам:
Плагин не обновлен до последней версии.
Плагин поврежден или содержит ошибки.
Плагин несовместим с текущей конфигурацией сайта или другими установленными плагинами.
Если сайт работает на WordPress, вы можете проверить, вызывает ли проблему один из плагинов, таким образом:
Войдите в файловый менеджер хостинга или панель управления, где можно управлять файлами сайта.
Найдите папку wp-content и перейдите в нее.
Переименуйте папку plugins, например, в plugins-1, чтобы отключить все плагины сразу.
Для другой CMS проделайте то же самое, отключив все модули или расширения.
После отключения всех плагинов проверьте, исчезла ли ошибка 403. Если да, значит, проблема действительно связана с одним из плагинов. Далее поочередно включайте каждый плагин и проверяйте, вызывает ли он ошибку 403. Таким образом, вы сможете найти конкретный плагин, вызывающий проблему.
После того как вы определите проблемный плагин, попробуйте обновить его до последней версии или связаться с его разработчиком.
Ошибки в файле .htaccess
.htaccess — это файл с командами для веб-сервера Apache. Он используется для настройки разных параметров сервера: редиректов, изменения лимитов на использование ресурсов, доступа к определенным страницам.
Ошибка 403 может возникнуть из-за проблем в файле .htaccess:
неправильно составленные команды,
конфликты между различными командами
наличие нескольких файлов .htaccess на сервере
использование специальных команд, запрещающих доступ к определенным ресурсам.
Чтобы понять, вызывает ли ошибку 403 файл .htaccess, можно временно переименовать его. Файл содержит правила, которые могут влиять на обработку запросов к сайту. При переименовании файла .htaccess сервер больше не будет использовать его содержимое, следовательно, правила из него не будут применяться к запросам к сайту. Если после этого ошибка исчезнет, то нужно вручную проверить и исправить содержимое файла.
Директивы доступа в файле .htaccess используются для управления доступом к ресурсам на вашем сайте. Они могут указывать, кому разрешен доступ, а кому запрещен. Вот основные директивы доступа и какие параметры они могут содержать, чтобы избежать ошибки 403:
Deny
Директива «Deny» указывает IP-адреса или диапазоны IP-адресов, пользовательские агенты или другие идентификаторы, которым запрещен доступ к ресурсу. Чтобы избежать ошибки 403, убедитесь, что в «Deny» указаны только те адреса или параметры, которым должен быть запрещен доступ, и нет лишних или некорректных записей.
Пример:
Deny from 192.168.1.1
Allow
Директива «Allow» указывает IP-адреса или диапазоны IP-адресов, которым разрешен доступ к ресурсу. Проверьте, что в «Allow» указаны только те адреса, для которых должен быть доступ к ресурсу.
Пример:
Allow from all
Require
Директива «Require» указывает условия, которым должны соответствовать пользователи, чтобы получить доступ к ресурсу. Например, можно требовать аутентификацию по паролю или проверку по IP-адресу. Чтобы избежать ошибки 403, убедитесь, что условия в «Require» заданы корректно и не противоречат друг другу.
Пример:
Require valid-user
Order
Директива «Order» определяет порядок применения правил «Deny» и «Allow». Важно правильно указать порядок, чтобы избежать конфликтов и ошибок доступа. Обычно используются значения «Deny, Allow», чтобы сначала запретить доступ, а затем разрешить только тем, на кого не распространяется запрет.
Пример:
Order Deny,Allow
Satisfy
Директива «Satisfy» определяет условия для удовлетворения правил «Deny» и «Allow». Обычно используется значение «Any», чтобы разрешить доступ, если выполнено хотя бы одно из условий. Это позволяет обеспечить доступ, если пользователь соответствует хотя бы одному из правил.
Пример:
Satisfy any
redirect и RewriteRule
Эти директивы в файле .htaccess используются для перенаправления запросов к сайту на другие URL. Они могут влиять на доступ к сайту и вызывать ошибку 403 в нескольких случаях:
Некорректные правила редиректа. Если из-за ошибки создается циклический редирект, это может привести к ошибке 403. Например, если правило редиректа указывает на несуществующий ресурс или целевой URL защищен, сервер может отказать в доступе и вернуть ошибку 403.
Конфликт с правилами доступа. Правила редиректа могут конфликтовать с правилами доступа, установленными в директивах Deny, Allow и Require. Если правило редиректа перенаправляет запрос на ресурс, к которому доступ запрещен, это может вызвать ошибку 403.
Отсутствие правил редиректа. Некоторые запросы могут быть направлены на защищенные ресурсы без правил редиректа. Например, если запрос направлен на страницу, которая доступна только после аутентификации, но правила редиректа не указывают на нее, сервер может вернуть ошибку 403, так как запрос не будет обработан должным образом.
Убедитесь, что директивы доступа корректно настроены, не содержат лишних записей и не противоречат друг другу.
Пример указания директив:
# Включение возможности использования файла .htaccess # Если этот параметр закомментирован или установлен в значение «None», сервер не будет обрабатывать файл <IfModule mod_rewrite.c> RewriteEngine On </IfModule> # Перенаправление всех запросов с HTTP на HTTPS, чтобы обеспечить безопасное соединение <IfModule mod_rewrite.c> RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] </IfModule> # Запрет доступа к файлу .htaccess <Files .htaccess> Require all denied </Files> # Запрет доступа к директориям /admin и /dir1 только для запросов с определенных IP-адресов <Directory "/path/to/admin"> Order deny,allow Deny from all Allow from 192.168.0.1 </Directory> <Directory "/path/to/dir1"> Order deny,allow Deny from all Allow from 192.168.0.1 </Directory> # Перенаправление всех запросов на index.php для использования ЧПУ <IfModule mod_rewrite.c> RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule>
Проверка брандмауэра
Брандмауэр веб-приложения — это ПО, которое принимает решения о том, какие запросы от пользователей считать допустимыми, а какие — нет, на основе заранее заданных правил или логики. Брандмауэр может автоматически блокировать определенные действия пользователей, которые он считает подозрительными или вредоносными, и возвращать им ошибку доступа 403.
Если при обращении к сайту возникает ошибка 403 из-за брандмауэра, сделайте так:
Отключите брандмауэр. Если у вас есть возможность управлять брандмауэром или временно его отключить, сделайте это. Это позволит проверить, является ли брандмауэр источником проблемы.
Повторите запрещенное действие. После отключения брандмауэра попробуйте повторить действие, которое вызвало ошибку 403. Если после этого ошибка исчезнет, значит, проблема действительно была связана с брандмауэром.
Проверьте журнал брандмауэра. После повторения действия, которое вызвало ошибку доступа, посмотрите журнал брандмауэра. В нем должна быть указана конкретная причина блокировки запроса. Это поможет понять, какие запросы или действия были заблокированы брандмауэром.
Добавьте исключения: После того как вы узнали причину блокировки, вы можете добавить соответствующие исключения или изменить настройки брандмауэра, чтобы разрешить такие запросы в будущем.
Почистите cookies и кэш
Как владелец сайта, вы можете почистить кэш и куки пользователей, чтобы решить проблему с ошибкой 403. Вот несколько способов сделать это:
Чистка кэша:
Если вы используете CMS, такие как WordPress, Joomla или Drupal, обычно есть функции для очистки кэша непосредственно из административной панели. Зайдите в административную панель своего сайта, найдите раздел "Настройки" или "Инструменты" и там должна быть опция для очистки кэша.
Если вы работаете с кастомным сайтом без CMS, вы можете использовать специальные плагины или расширения браузера для очистки кэша. Например, для Google Chrome существует расширение под названием "Clear Cache", которое позволяет легко очистить кэш браузера.
Вы также можете попросить пользователей очистить кэш своего браузера, следуя инструкциям для их конкретного браузера.
Удаление куков:
Куки также могут вызывать проблемы с доступом к сайту. Вы можете удалить куки, связанные с вашим сайтом, из административной панели вашего сайта, если такая функция предусмотрена. Обычно это делается в разделе "Настройки" или "Безопасность".
Проверьте настройки ModSecurity или другого файрвола, который работает на сайте
Файрвол защищает сайт от внешних угроз, таких как атаки SQL-инъекций, кросс-сайтового скриптинга и других. Он анализирует входящие HTTP-запросы и блокировки тех из них, которые соответствуют заранее заданным правилам безопасности. Когда файрвол обнаруживает потенциально вредоносный запрос, он возвращает код HTTP 403 Forbidden и запрещает доступ к ресурсу.
Иногда файрвол срабатывает неправильно, блокируя безопасные запросы, например, при отправке данных через форму. Это может произойти из-за неверного определения запроса как потенциально вредоносного. В результате пользователя могут столкнуться с ошибкой 403 даже при выполнении обычных действий на сайте.
Решением проблемы будет отключение конкретного правила, которое приводит к неправильной блокировке запросов. Однако это действие доступно только владельцам VPS или выделенных серверов, так как на виртуальных хостингах настройками файрвола управляет провайдер. В таком случае нужно обратиться в службу поддержки провайдера и попросить отключить соответствующее правило для вашего сайта.
Чтобы понять, что проблема связана именно с файрволом, нужно проверить логи, где фиксируются его действия.
На серверах VPS или выделенных серверах логи размещаются так:
- для Apache — /usr/local/apache/logs/modsec_audit.log,
- для Nginx — /var/log/modsec_audit.log.
На виртуальных хостингах логи могут быть закрыты для пользователей, поэтому придется обратиться к хостинг-провайдеру и запросить информацию.
Что искать и где смотреть — разберем на примере ModSecurity:
Проверьте содержимое файлов журналов ModSecurity на предмет ошибок с кодом 403 Forbidden. Найдите записи в журналах, которые содержат этот код ошибки. Вы можете использовать команду grep в командной строке для фильтрации строк, содержащих код ошибки 403. Например:
grep "403" /usr/local/apache/logs/modsec_audit.log
Это отобразит все строки в файле modsec_audit.log, содержащие текст «403».
После того как вы нашли записи с кодом ошибки 403, изучите их содержание, чтобы определить, что именно вызвало блокировку запроса. Обычно в записях содержится информация о правиле ModSecurity, которое сработало, и о самом запросе, который был заблокирован.
В зависимости от причины блокировки запроса можно изменить или отключить соответствующее правило. После внесения изменений повторно протестируйте приложение, чтобы убедиться, что ошибка 403 больше не возникает.
Если ничего не помогает — обратитесь за помощью к своему хостинг-провайдеру.
Ограничения на стороне хостинга или провайдера
Ограничения на IP-адреса
Хостинг-провайдер может устанавливать ограничения на доступ к определенным IP-адресам или диапазонам IP-адресов. Если ваш IP-адрес заблокирован, вы можете столкнуться с ошибкой 403 при попытке доступа к сайту.
Ограничения на использование ресурсов
Некоторые хостинг-провайдеры устанавливают ограничения на использование ресурсов, таких как процессорное время, объем памяти или количество запросов к серверу. Если ваш сайт превышает эти ограничения, сервер может блокировать доступ к нему и возвращать ошибку 403.
Тариф хостинга не поддерживает технологии вашего сайта
Поддержка конкретных версий языков программирования или других инструментов зависит от выбранного тарифа хостинга. Если ваш сайт использует новые версии языков или инструментов, которые не поддерживаются вашим текущим тарифом, это может вызвать ошибку 403. Решение может потребовать перехода на другой тариф с поддержкой нужных инструментов или смены хостинг-провайдера.
Хостинг прекратил обслуживать сайт
Ошибка 403 может возникнуть, если ваш хостинг-провайдер временно или окончательно прекратил обслуживание вашего сайта. Причины могут быть разные, включая просрочку платежа, нарушение условий пользовательского соглашения, блокировки Роскомнадзора и т. д. В таких случаях важно связаться с хостинг-провайдером для выяснения причин и решения проблемы.
Переезд сайта на новый IP-адрес или изменение настроек DNS
Это может вызвать временные проблемы с доступом к сайту из-за кэширования данных на DNS-серверах. Обычно это решается автоматически с течением времени, поскольку кэш DNS-серверов обновляется. Однако в редких случаях это может занять несколько дней.