Инструкция для пользователей и администраторов сайтов.
Если вы переходите на сайт и он не работает, это может произойти по разным причинам. Одна из ситуаций связана с ошибкой авторизации — error 401 Unauthorized. Давайте разберёмся, что это за ошибка, почему она возникает и как её устранить.
Что означает ошибка 401
Ошибка 401 Unauthorized означает «неавторизованный» или «несанкционированный» доступ. Она возникает, когда пользователь пытается получить доступ к защищённому ресурсу, но вводит неверные учётные данные для аутентификации. Например, когда указывает неправильный пароль при входе в личный аккаунт социальной сети.
Ошибка 401 может явно отображаться в виде сообщения или быть скрытой. При явном отображении сообщение появляется на текущей странице. На разных сайтах формулировка может различаться, и вместо текста «Ошибка 401 Unauthorized» вы можете встретить такие варианты:
- 401 Unauthorized — «неавторизованный».
- Authorization Required — «требуется авторизация».
- HTTP Error 401 — «ошибка авторизации».
- «Ошибка авторизации».
- Access Denied — «доступ запрещён».
- Authentication Required — «требуется аутентификация».
- Login Failed — «ошибка входа».
- Invalid Credentials — «неверные учётные данные».
- Please Log In — «пожалуйста, выполните вход».
- Authentication Error — «ошибка аутентификации».
В случае неявного отображения ошибки система сбрасывает неверно введённые данные и возвращает пользователя к пустой форме входа.
Чтобы увидеть ошибку 401 в действии, воспользуемся сервисом httpstat.us. Если вы перейдёте по ссылке httpstat.us/401, браузер отобразит стандартное диалоговое окно с запросом логина и пароля. Введите любые данные: сервис их сбросит и неявно вернёт ошибку 401. То есть на странице не появится никакого предупреждающего сообщения.
Давайте воспользуемся инструментами разработчика браузера (DevTools) и проверим, что мы действительно получаем нужную ошибку:
- Оставайтесь на странице по этой ссылке: httpstat.us/401.
- Откройте инструменты разработчика: клавиша F12 или комбинация Ctrl + Shift + I в большинстве браузеров.
- Перейдите на вкладку Network («Сеть»).
- Введите логин и пароль — попробуйте получить доступ к защищённому ресурсу.
- В списке запросов найдите сообщение с кодом 401.
- Нажмите на него для просмотра подробной информации.
Демонстрация ошибки 401 в браузере Opera через сервис httpstat.us
Скриншот: Opera / httpstat.us / Skillbox Media
Причины появления ошибки
Ошибка 401 может возникнуть из-за некорректной авторизации пользователя, технических неполадок на стороне клиента или сервера, а также проблем с API и токенами. Рассмотрим каждую из этих категорий.
- Неверно введённые логин или пароль при попытке входа в систему.
- Отсутствие прав доступа к странице. Пользователь может получить такую ошибку при попытке открыть закрытый раздел без подписки или при входе в административную панель без прав администратора.
- Блокировка учётной записи администратором. Это может быть временная или постоянная мера, связанная с нарушением правил использования сервиса или подозрительной активностью.
- Автоматическая блокировка IP-адреса из-за множественных неудачных попыток входа. К примеру, после пяти неуспешных попыток за 15 минут система может заблокировать доступ с этого IP на час.
- Некорректное кэширование учётных данных. Браузер может хранить устаревшие данные авторизации даже после изменения пароля.
- Проблемы с файлами cookie и пользовательской сессией. Например, в режиме инкогнито браузер может случайно заблокировать или удалять cookie-файлы, что приведёт к потере данных авторизации.
- Проблемы с синхронизацией времени между клиентом и сервером. Если разница во времени составляет более пяти минут, система безопасности может расценить это как угрозу и заблокировать доступ. Такая ситуация часто возникает при работе с виртуальной машиной, время которой не синхронизировано с основным компьютером.
- Устаревшие или конфликтующие расширения браузера. Особенно это касается расширений для блокировки рекламы и обеспечения безопасности — они могут блокировать важные скрипты авторизации или вмешиваться в работу с cookie-файлами.
- Неверные настройки хостинг-провайдера. К таким относятся некорректная конфигурация серверов Apache или Nginx, неправильная настройка правил обработки HTTP-заголовков и ограничений на количество одновременных подключений.
- Ненадёжные SSL/TLS-сертификаты. Проблема возникает при использовании просроченных или самоподписанных сертификатов, которые браузеры считают небезопасными.
- Некорректная работа плагинов безопасности. Например, когда плагин двухфакторной аутентификации WordPress конфликтует с плагином защиты от брутфорс-атак. Иногда это приводим к ложным блокировкам пользователей или сбоям в процессе входа в систему.
- Конфликты между методами аутентификации. Например, когда приложение использует OAuth 2.0 и базовую HTTP-аутентификацию. OAuth 2.0 использует для авторизации токены, а HTTP-аутентификация — логин и пароль. Это может привести к путанице в определении текущего статуса авторизации пользователя.
- Использование устаревших токенов доступа. Например, если срок действия токена истёк спустя 24 часа, а приложение продолжает пытаться его использовать вместо запроса нового.
- Некорректные API-запросы. Такое может происходить, когда приложение отправляет запросы с неправильным форматом данных. Например, если сервер ожидает JSON-объект, а клиент отправляет данные в формате XML или не заполняет обязательные поля.
- Ошибки валидации временных меток в токенах аутентификации. Если время на сервере и клиенте различается, токен может быть отклонён, поскольку система посчитает его созданным в будущем.
Как исправить ошибку пользователю
В этом разделе описаны базовые шаги для решения проблемы с ошибкой 401. Рекомендуем проверять наличие каждой проблемы методом последовательного исключения: после каждого шага обновите страницу и смотрите, сохраняется ли ошибка. Если одно решение не помогло, переходите к следующему.
- Откройте настройки браузера и перейдите в раздел История или Конфиденциальность.
- Выберите период очистки. Например, За последний час или За всё время.
- Отметьте пункты Файлы cookie и Данные сайтов, затем очистите данные браузера.
После очистки вам придётся заново войти в аккаунты на всех сайтах. Если браузер позволяет, лучше удалить cookie только для проблемного сайта.
Например, если время на ПК отстаёт на 15 минут и вы пытаетесь войти в банковское приложение, система может отклонить запрос, считая токен аутентификации просроченным. Чтобы этого избежать, включите автоматическую настройку времени на устройстве. Это можно сделать на всех операционных системах: Windows, Linux, macOS, Android и iOS.
- Откройте меню расширений браузера — обычно это значок-пазл в правом верхнем углу страницы.
- Временно отключите все расширения с помощью переключателей.
- Обновите страницу и проверьте, исчезла ли ошибка. Если да, включайте расширения поочерёдно, чтобы найти проблемное.
Особое внимание обратите на расширения, связанные с безопасностью и блокировкой рекламы, — они чаще всего конфликтуют с авторизацией.
Если найти конфликтующие расширения не удалось, попробуйте использовать режим инкогнито — это поможет определить, связана ли проблема с профилем браузера. Если в режиме инкогнито ошибка сохраняется, попробуйте открыть сайт в другом браузере — иногда проблема может быть в его настройках или повреждённом профиле.
Очистку DNS нужно выполнять на уровне операционной системы, так как это системный сервис, отвечающий за преобразование доменных имён.
- Порядок очистки DNS-кэша для Windows. Откройте командную строку от имени администратора и введите команду: ipconfig /flushdns.
- Для macOS. Откройте терминал и введите команду: sudo killall -HUP mDNSResponder. После запроса введите пароль администратора.
- Для Linux. Откройте терминал и введите одну из команд: sudo resolvectl flush-caches или sudo systemd-resolve –flush-caches.
После очистки DNS-кэша перезапустите браузер, чтобы изменения вступили в силу.
Если проблема сохраняется, обратитесь в техподдержку провайдера с описанием проблемы. Укажите методы решения, которые вы испробовали, и приложите скриншот получаемой ошибки.
Как исправить ошибку администратору сайта
Если несколько пользователей сообщают об одной и той же проблеме или ошибка 401 не устраняется стандартными методами, администратору необходимо провести комплексную проверку системы. Для этого нужно выполнить диагностику на стороне сервера, проверить конфигурации, изучить журналы ошибок и логов, провести мониторинг сетевого трафика, аудит системы авторизации и выполнить другие проверки.
Если ошибка появляется на всех устройствах и во всех браузерах, следует обратиться в службу поддержки хостинга:
- Предоставьте скриншоты ошибок и логи сервера.
- Укажите, когда именно появилась проблема.
- Опишите, какие действия предшествовали появлению ошибки.
Специалисты хостинга помогут исключить проблемы на своей стороне — они проверят доступность сервера, корректность DNS-записей, работу SSL-сертификатов, настройки файрвола и конфигурацию веб-сервера. Часто они могут сразу определить причину проблемы по логам сервера.
- Проверьте настройки веб-сервера в конфигурационных файлах Apache (.htaccess и httpd.conf). Эти файлы содержат правила доступа и параметры авторизации, определяющие доступность разделов сайта. Руководство: Authentication and Authorization.
- Проверьте настройки безопасности и параметры сессий в файле конфигурации PHP (php.ini). Особое внимание уделите параметрам session.gc_maxlifetime (время жизни сессии) и session.cookie_lifetime (время хранения cookie) — они определяют, как долго пользователь может оставаться авторизованным на сайте без повторного входа. Документация: PHP Session Configuration.
- Проверьте настройку файрвола и правила .htaccess для контроля доступа, а также выполните верификацию SSL-сертификатов и их актуальность. Не забудьте также провести аудит прав доступа к файлам и их владельцев (через команды chmod и chown). Подробнее о настройках безопасности читайте в документации Apache: Security Tips.
Инструменты и сервисы для тестирования системы авторизации:
- Проверьте состояние кэша. Неправильная работа кэша может вызывать проблемы с авторизацией из-за устаревших данных сессий. Инструменты: Redis CLI или phpRedisAdmin.
- Проведите сканирование на вредоносный код. Он может перехватывать авторизационные данные или создавать бэкдоры. Подходящие утилиты: ClamAV, Malwarebytes или VirusTotal.
- Проверьте работу плагинов и модулей авторизации. Конфликты между плагинами часто вызывают проблемы с авторизацией. Чтобы найти проблемный плагин, отключайте их по одному, используя инструменты Debug Bar или Query Monitor.
- Обновите компоненты системы авторизации. Устаревшие версии часто содержат уязвимости, которые ставят под угрозу безопасность сайта и создают проблемы при авторизации. Инструменты для проверки версий: Composer Version Check и WP-CLI.
Если проверки не помогли — попробуйте обратиться к разработчикам CMS или фреймворка, на котором работает ваш сайт. Возможно, они помогут выявить причину ошибки 401 или предложат готовое решение.
Вы также можете привлечь стороннего специалиста для аудита системы или откатить сайт к последней стабильной версии из резервной копии.
В процессе устранения ошибки постарайтесь задокументировать все предпринятые действия и их результаты. Это поможет избежать повторения проблемы и упростит решение похожих ситуаций в будущем.
Что дальше
Если все перечисленные способы не работают, попробуйте найти решение в технической документации. Вот полезные ресурсы по ошибке 401:
Защищённый ресурс — это любой онлайн-сервис, для доступа к которому требуется подтверждение личности пользователя. К таким ресурсам относятся личные кабинеты, электронная почта, банковские аккаунты и другие системы с ограниченным доступом.
Аутентификация — процесс подтверждения личности пользователя, при котором система проверяет, действительно ли вы тот, за кого себя выдаёте. Это происходит с помощью пароля, электронной подписи, биометрии и других способов.
Самоподписанный сертификат — это цифровой сертификат безопасности, который создаёт и подписывает сам владелец сайта, а не официальный центр сертификации. Такой способ позволяет сэкономить на покупке сертификатов на этапе разработки и тестирования приложений.
Брутфорс-атака — это метод подбора пароля путём перебора всех возможных комбинаций символов. Программа проверяет варианты по порядку: a, b, c, …, aa, ab, ac и так далее, пока не найдёт подходящий. Это простой и эффективный способ взлома слабых паролей.
Временная метка — это цифровой идентификатор, который фиксирует точное время создания или изменения данных. Системы используют её для проверки актуальности информации и обеспечения безопасности.
Разница даже в несколько минут может привести к отказу в доступе, поскольку системы безопасности обычно имеют строгие ограничения на срок действия токенов авторизации — часто это период в 5–15 минут.
Порядок синхронизации времени в Windows:
— Откройте: «Настройки» → «Время и язык» → «Дата и время».
— Включите: «Установить время автоматически».
— Нажмите: «Синхронизировать сейчас».
Порядок синхронизации времени в Linux:
— Откройте настройки системы или панель управления и найдите раздел «Дата и время».
— Включите: «Автоматическая настройка даты и времени» или «Network Time Protocol (NTP)».
Для дистрибутивов Ubuntu или Debian вы можете использовать команду: sudo timedatectl set-ntp true.
Порядок синхронизации времени в macOS:
— Откройте: «Системные настройки» → «Дата и время».
— Включите: «Установить автоматически».
— Выберите ближайший часовой сервер.
Порядок синхронизации времени в Android:
— Откройте: «Настройки» → «Система» → «Дата и время».
— Включите: «Автоматическое определение даты и времени».
Порядок синхронизации времени в iOS:
— Откройте: «Настройки» → «Основные» → «Дата и время».
— Включите: «Автоматически».
Логи сервера — это файлы, содержащие записи о работе сервера. В них фиксируются ошибки, действия пользователей и системные события.
XSS (cross-site scripting) — тип уязвимости, который позволяет злоумышленникам внедрять вредоносный код на страницы сайта, доступные другим пользователям.
Например, злоумышленник может вставить JavaScript-код в комментарий на форуме. Когда другие пользователи откроют страницу с этим комментарием, код выполнится в их браузере. Это может привести к краже cookies, перенаправлению на фишинговые сайты и так далее.
SQL-инъекция — это метод взлома, когда злоумышленник внедряет вредоносные SQL-команды через формы ввода или URL-адреса для получения неразрешённого доступа к базе данных.
Бэкдор — это общее название для ряда инструментов получения несанкционированного доступа к системе, позволяющих обходить стандартные механизмы защиты и авторизации. Например, злоумышленник может создать скрытую учётную запись администратора, использовать троянскую программу или внедрить вредоносный код для удалённого выполнения команд на сервере.
Компоненты системы авторизации сайта — это модули и настройки, которые отвечают за проверку прав доступа пользователей и управление их сессиями. Распространённые сочетания технологий:
— PHP + MySQL + PHP-FPM — базовая авторизация с хранением сессий в базе данных.
— Node.js + MongoDB + Redis — современное приложение с кэшированием сессий.
— Django + PostgreSQL + Memcached — Python-проект для работы с высокими нагрузками.
— Laravel + MySQL + JWT — REST API с токенной аутентификацией.