Практическое руководство
От пароля до работающего Basic Auth
Разберите формат записи, выберите правильный вариант для своей конфигурации и не потеряйте защиту на этапе развёртывания.
Модель процесса
Что происходит в браузере
Bcrypt не шифрует пароль для последующей расшифровки. Он создаёт односторонний адаптивный хеш с новой случайной солью при каждом запуске.
Выбор формата
Один хеш — два способа вставки
Apache или Traefik usersFile
Сохраните обычную строку. Доллары являются частью bcrypt-хеша и не экранируются.
admin:$2y$10$…
Traefik в Docker Compose labels
Compose обрабатывает значения до передачи контейнеру, поэтому буквальный доллар записывается как $$.
admin:$$2y$$10$$…
AuthType Basic
AuthName "Private area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
labels:
- "traefik.http.middlewares.auth.basicauth.users=admin:$$2y$$10$$…"
- "traefik.http.routers.app.middlewares=auth"
Настройка нагрузки
Как читать стоимость bcrypt
Стоимость — двоичный логарифм числа раундов. Переход с 10 на 11 примерно удваивает работу, а с 10 на 12 — увеличивает её примерно в 4 раза. Реальное время зависит от устройства.
Контрольный список
Хеш — не вся защита
Только HTTPS
Basic Auth кодирует учётные данные, но не шифрует транспорт.
Файл вне web-root
Посетитель не должен иметь возможность скачать файл с хешами.
Уникальный пароль
Не используйте пароль от основной учётной записи или другого сервиса.
Проверьте развёртывание
Убедитесь, что Compose передал одиночные доллары внутрь Traefik.
Первоисточники
Формат и конфигурация
FAQ
Частые вопросы
Зачем удваивать знаки доллара для Traefik?
Это нужно не самому bcrypt и не Traefik, а Docker Compose. Последовательность $$ превращается в один буквальный $ при обработке Compose-файла.
Нужно ли удваивать доллары в файле .htpasswd?
Нет. В обычном файле, Apache AuthUserFile и Traefik usersFile оставляйте одиночные доллары.
Почему одинаковый пароль каждый раз получает новый хеш?
Bcrypt создаёт новую случайную соль. Разные строки могут корректно проверять один пароль.
Что означает ограничение 72 байта?
Bcrypt использует только первые 72 байта пароля. Один символ UTF-8 может занимать несколько байт, поэтому генератор считает именно байты.
Отправляется ли пароль на сервер?
Нет. Библиотека bcrypt загружается с ToolKitch, а вычисление выполняется локально в браузере.