hostprofi.ru
Подобрать хостинг
Термин·буква Б

Базовая аутентификация (Basic Auth)

краткое определение

Basic Auth — простейший механизм HTTP-аутентификации. Логин и пароль кодируются Base64 и передаются в заголовке Authorization. Без HTTPS пара логин:пароль читается в открытом виде перехватчиком.

Basic Authentication (базовая аутентификация) — схема HTTP-аутентификации, определённая в RFC 7617 (2015), заменившем RFC 2617 (1999). Клиент передаёт учётные данные в заголовке HTTP-запроса: Authorization: Basic base64(login:password). Base64 — не шифрование, а кодировка: строка admin:secret превращается в YWRtaW46c2VjcmV0 и легко декодируется обратно. Без HTTPS любой, кто перехватит трафик, получит пароль в открытом виде.

Как работает

Механизм аутентификации: сервер возвращает HTTP 401 Unauthorized с заголовком WWW-Authenticate: Basic realm="Admin Area". Браузер показывает диалог ввода логина и пароля. Пользователь вводит данные, браузер кодирует их Base64 и добавляет заголовок Authorization к запросу. Сервер проверяет учётные данные и возвращает 200 OK или снова 401.

В nginx Basic Auth настраивается через директивы auth_basic и auth_basic_user_file:

location /admin {
    auth_basic "Admin Area";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

Файл .htpasswd создаётся утилитой htpasswd из пакета apache2-utils. Пароли хранятся в хешированном виде (MD5, SHA1, bcrypt). В Apache — аналогично через директивы AuthType Basic, AuthUserFile, Require valid-user в .htaccess или основном конфиге.

Basic Auth не хранит состояние сессии: каждый запрос содержит заголовок Authorization. Браузер автоматически прикрепляет его до закрытия вкладки или очистки кеша. Выход реализуется только явным запросом с неверными данными или через API браузера.

История

Basic Auth появился в HTTP/1.0 (RFC 1945, 1996) как простейший механизм защиты ресурсов. В 1999 году RFC 2617 уточнил спецификацию и добавил Digest Authentication как более безопасную альтернативу. В 2015 году RFC 7617 актуализировал Basic Auth, добавив поддержку кодировки UTF-8 для логинов и паролей. Несмотря на известные ограничения, Basic Auth сохраняется как стандарт для защиты внутренних инструментов и API из-за своей простоты.

Применение в хостинге

  • Защита staging-окружений и административных панелей от случайного доступа.
  • Ограничение доступа к phpMyAdmin, Grafana, Kibana, Prometheus до настройки native-аутентификации.
  • Защита директорий с чувствительным содержимым (например, /backup/).
  • API-аутентификация для простых внутренних сервисов, где OAuth избыточен.

На что обращать внимание

Basic Auth без HTTPS — критическая уязвимость: пароль передаётся в кодировке Base64, которая тривиально декодируется. Всегда используйте Basic Auth только поверх TLS. Для VPS с nginx настройте Let's Encrypt сертификат перед включением Basic Auth. Basic Auth не защищает от brute-force атак — добавьте ограничение попыток входа через fail2ban. Для продакшен-приложений с пользователями используйте более безопасные механизмы: JWT, OAuth 2.0, сессионную аутентификацию.

Принцип Basic Auth

HTTP Basic Auth: браузер кодирует login:password в Base64 и отправляет в заголовке Authorization: Basic dXNlcjpwYXNz. Base64 — не шифрование: легко декодируется. Без HTTPS Basic Auth — передача пароля в открытом виде. С HTTPS — безопасен для простых сценариев.

Настройка в Nginx

auth_basic "Protected"; auth_basic_user_file /etc/nginx/.htpasswd;. Создание htpasswd: htpasswd -c /etc/nginx/.htpasswd username. Ограничение конкретного location или всего server. Исключения по IP: satisfy any; allow 10.0.0.0/8; deny all; auth_basic "...";.

Когда использовать Basic Auth

Защита staging/dev сред от случайной индексации и доступа. Защита admin-панелей как дополнительный уровень. Простые API с нечастым использованием. Для production API предпочтительнее: Bearer Token (JWT), API Key, OAuth2. Basic Auth не поддерживает логаут без закрытия браузера.

Basic Auth настраивается в Nginx через auth_basic директиву. Защищает staging-среды, admin-панели, Prometheus/Grafana. В связке с HTTPS безопасен. Fail2ban ограничивает перебор паролей. Для API: предпочтительнее Bearer Token.

Другие термины