HTTP 403 Forbidden — один из кодов состояния HTTP, означающий, что сервер понял запрос клиента, но отказывается его выполнить. В отличие от 401 Unauthorized, аутентификация (ввод пароля) не поможет — запрос отклоняется по политике, а не из-за отсутствия авторизации. RFC 9110 (HTTP Semantics, 2022) описывает 403 как «сервер понимает запрос, но отказывает в авторизации».
Как работает
Сервер возвращает 403, когда одно из следующих условий не выполнено:
- Права доступа к файлу или директории — процесс веб-сервера (nginx, Apache) не может прочитать файл. Стандартные права в Linux: файлы
644(rw-r--r--), директории755(rwxr-xr-x). Если файл имеет права600, только владелец может читать — веб-сервер работающий под пользователем www-data получит отказ. - Отсутствие индексного файла при запрете листинга — запрос к директории без
index.php/index.htmlпри настройкеautoindex off(nginx по умолчанию) возвращает 403. - Блокировка по IP или IP-диапазону — директивы
deny IPв nginx илиDeny fromв Apache/.htaccess. - WAF (Web Application Firewall) — блокировка подозрительных запросов (SQL injection, XSS паттерны) возвращает 403.
- Hotlink protection — блокировка прямых ссылок на файлы с чужих доменов.
В nginx диагностика: смотрите error.log. Типичные записи: 13: Permission denied (права доступа), directory index of ... is forbidden (листинг директории запрещён). В Apache — error_log: [Forbidden] You don't have permission to access.
История
HTTP-код 403 определён в RFC 1945 (HTTP/1.0, 1996) и унаследован в RFC 2616 (HTTP/1.1, 1999). В 2022 году RFC 9110 уточнил семантику: «403 Forbidden означает, что сервер понимает запрос, но отказывает в авторизации». До RFC 9110 разграничение между 401 и 403 было размытым. Cloudflare использует расширенные подкоды в теле ответа (1001, 1003 и другие) для дифференциации причин блокировки CDN.
Диагностика и исправление
- Неправильные права
chmod 755 /var/www/html && chmod -R 644 /var/www/html/*- Неверный владелец файла
chown -R www-data:www-data /var/www/html- Отсутствует index-файл
- Создать
index.htmlили включитьautoindex on(осторожно: раскрывает структуру директорий). - Блокировка по IP
- Проверить
deny-директивы в конфигурации nginx/Apache, правила WAF и настройки CDN.
403 в контексте SEO
403 на страницах сайта приводит к исключению из индекса поисковиков. Если Googlebot получает 403 — страница помечается как недоступная и через некоторое время исключается из поиска. Проверяйте 403-ответы через Google Search Console (раздел «Охват» → «Ошибки»). Намеренная 403 для закрытых разделов (личный кабинет, API endpoint) — допустимая практика: переправильные заголовки X-Robots-Tag: noindex для явного запрета индексации.
На что обращать внимание
Не путайте 403 и 404: 403 — доступ запрещён (ресурс существует), 404 — ресурс не найден. С точки зрения безопасности рекомендуется возвращать 404 вместо 403 для закрытых ресурсов — это не раскрывает злоумышленнику, что ресурс существует. На VPS и выделенных серверах 403 часто возникает после переноса сайта из-за несоответствия прав или пути к файлам в конфиге nginx.
Ошибка 403 возникает при неверных правах на файлы (chmod/chown) или ограничениях Nginx/Apache. Фаервол и WAF возвращают 403 для заблокированных запросов. Cloudflare возвращает 403 при срабатывании правил безопасности. htaccess-правила в Apache часто источник проблемы.