Открыть сервис

HTTP Basic Authentication

HTTP Basic Authentication — это механизм аутентификации в протоколе HTTP, при котором клиент (обычно веб-браузер) передаёт серверу имя пользователя и пароль в незашифрованном виде (base64) в заголовке запроса. Относится к классу простейших схем аутентификации, определённых в спецификации HTTP/1.0 (RFC 1945) и HTTP/1.1 (RFC 2617, обновлён в RFC 7235). Характеризуется минимальными требованиями к реализации, но низким уровнем безопасности при отсутствии шифрования транспортного уровня (TLS/SSL).

История

Механизм был введён в 1996 году в рамках спецификации HTTP/1.0 (RFC 1945) как один из первых стандартных способов ограничения доступа к веб-ресурсам. Разработчики исходили из предположения, что HTTP-трафик будет передаваться по защищённым каналам (например, локальным сетям), поэтому шифрование учётных данных не предусматривалось. В 1999 году RFC 2617 уточнил схему, добавив опциональный механизм Digest Access Authentication — более безопасную альтернативу, использующую хеширование пароля. Однако Basic-схема осталась широко распространённой из-за простоты реализации и совместимости.

С развитием HTTPS (HTTP поверх TLS/SSL) в 2000-х годах использование Basic Authentication стало считаться приемлемым только в сочетании с шифрованием транспортного уровня. В противном случае пароли передаются в открытом виде и могут быть перехвачены злоумышленником.

Принцип работы

Процесс аутентификации состоит из двух основных этапов:

  1. Запрос без учётных данных: Клиент отправляет HTTP-запрос к защищённому ресурсу без заголовка Authorization.
  2. Ответ сервера с требованием аутентификации: Сервер возвращает ответ с кодом состояния 401 (Unauthorized) и заголовком WWW-Authenticate: Basic realm="<описание области>". Параметр realm (область) указывает, к какой части ресурса требуется доступ.
  3. Повторный запрос с учётными данными: Клиент (обычно браузер) отображает диалоговое окно для ввода имени пользователя и пароля. После ввода клиент формирует строку вида username:password, кодирует её в base64 и отправляет в заголовке Authorization: Basic <base64-строка>.
  4. Проверка сервером: Сервер декодирует строку, извлекает учётные данные и проверяет их. При успехе возвращается запрошенный ресурс; при неудаче — снова 401.

Формат заголовка

Безопасность

Основные уязвимости HTTP Basic Authentication:

  1. Передача пароля в открытом виде: Кодировка base64 не является шифрованием — это простое преобразование, которое легко обращается. При перехвате HTTP-трафика (например, через нешифрованную Wi-Fi-сеть) злоумышленник мгновенно получает учётные данные.
  2. Отсутствие защиты от повторного воспроизведения: Поскольку пароль передаётся в каждом запросе, перехваченный заголовок можно использовать повторно для доступа к ресурсу до тех пор, пока пароль не будет изменён.
  3. Уязвимость к атакам «человек посередине» (MITM): Без HTTPS злоумышленник может не только перехватить, но и подменить ответ сервера, выдав себя за легитимный ресурс.
  4. Отсутствие механизма выхода: Браузеры обычно кэшируют учётные данные и автоматически отправляют их при каждом запросе к той же области. Пользователь не может «выйти» из сессии, не закрыв браузер или не очистив кэш.

Рекомендации по безопасному использованию:

Применение

Несмотря на недостатки, Basic Authentication продолжает использоваться в ряде сценариев:

Альтернативы

Более безопасные схемы аутентификации в HTTP:

Пример реализации на веб-сервере Nginx

``nginx location /admin/ { auth_basic "Административная зона"; auth_basic_user_file /etc/nginx/.htpasswd; } ``

Файл .htpasswd содержит строки вида username:hashed_password (хеш генерируется утилитой htpasswd из пакета Apache).

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →