У цій статті
Що таке htpasswd?
Файл htpasswd — це база даних у вигляді текстового файлу, яку використовують веб-сервери Apache та Nginx для зберігання імен користувачів та хешів паролів для HTTP Basic Authentication. Кожен рядок містить ім'я користувача та хеш пароля, розділені двокрапкою, наприклад admin:$2y$10$abc... Файл забезпечує простий спосіб захисту веб-ресурсів без потреби у повноцінній системі автентифікації.
Утиліта htpasswd спочатку була частиною проєкту Apache HTTP Server, але формат файлу став стандартом де-факто, який підтримують багато веб-серверів, зворотних проксі та інструментів розробки. Сучасні генератори htpasswd підтримують кілька алгоритмів хешування, включаючи bcrypt, SHA-1 та MD5, причому bcrypt є рекомендованим вибором для безпеки.
Як працює генерація htpasswd
Генерація запису htpasswd полягає у хешуванні текстового пароля обраним алгоритмом та форматуванні його разом з іменем користувача. Стійкість отриманого хешу залежить від алгоритму та його налаштувань.
- bcrypt ($2y$) — найбезпечніший варіант, використовує налаштовуваний фактор вартості (за замовчуванням 10), який контролює обчислювальну складність кожного хешу, роблячи атаки грубою силою непрактичними
- SHA-1 ({SHA}) — створює дайджест SHA-1 у кодуванні Base64 з префіксом {SHA}; швидший за bcrypt, але значно слабший проти сучасних GPU-атак
- MD5 ($apr1$) — власний варіант MD5 від Apache з випадковою сіллю; застарілий формат, який досі підтримується, але не рекомендується для нових розгортань через відомі вразливості
Спробуйте безкоштовно — реєстрація не потрібна
Згенерувати запис htpasswd →Поширені способи використання htpasswd
Автентифікація на основі htpasswd широко використовується для легкого контролю доступу, коли повноцінна система автентифікації була б надмірною.
- Захист тестових середовищ — обмежити доступ до передвиробничих середовищ, щоб лише члени команди та зацікавлені сторони могли переглядати поточну роботу
- Безпека панелі адміністратора — додати додатковий рівень автентифікації перед панелями адміністрування CMS, інструментами управління базами даних або моніторинговими дашбордами
- Доступ до середовища розробки — захистити локальні або спільні сервери розробки від несанкціонованого доступу без налаштування OAuth або LDAP
Поширені запитання
Який алгоритм використовувати для htpasswd: bcrypt, SHA-1 чи MD5?
Завжди використовуйте bcrypt, коли це можливо. Bcrypt спеціально розроблений для хешування паролів з налаштовуваним фактором вартості, що робить його стійким до атак грубою силою. SHA-1 та MD5 — це швидкі хеш-функції, не призначені для паролів — їх можна зламати на порядки швидше, ніж bcrypt.
Де розмістити файл htpasswd на сервері?
Зберігайте файл htpasswd поза кореневою директорією вебу, щоб запобігти його передачі відвідувачам. Типове розташування — /etc/apache2/.htpasswd або /etc/nginx/.htpasswd. Потім вкажіть його у конфігурації сервера за допомогою AuthUserFile (Apache) або auth_basic_user_file (Nginx). Ніколи не розміщуйте його в публічно доступній директорії.
Чи достатньо безпечна HTTP Basic Authentication для продакшену?
Basic Authentication надсилає облікові дані у кодуванні Base64 (не зашифровані) з кожним запитом, тому завжди має використовуватися через HTTPS. Навіть з HTTPS їй бракує таких функцій, як управління сеансами, обмеження швидкості та блокування облікового запису. Вона підходить для сценаріїв з низьким ризиком, як-от тестові сайти або внутрішні інструменти, але автентифікація користувачів у продакшені має використовувати повноцінну систему з сеансами на основі токенів.