W tym artykule
Czym jest htpasswd?
Plik htpasswd to baza danych w pliku tekstowym używana przez serwery internetowe Apache i Nginx do przechowywania nazw użytkowników i zahashowanych hasel dla uwierzytelniania HTTP Basic. Każdy wiersz zawiera nazwe użytkownika i hash hasła oddzielone dwukropkiem, np. admin:$2y$10$abc... Plik zapewnia prosty sposob ochrony zasobow internetowych bez konieczności posiadania pełnego systemu uwierzytelniania.
Narzędzie htpasswd bylo pierwotnie częścią projektu Apache HTTP Server, ale format pliku stal sie standardem de facto obsługiwanym przez wiele serwerow internetowych, odwrotnych proxy i narzędzi deweloperskich. Nowoczesne generatory htpasswd obsługują wiele algorytmow hashowania, w tym bcrypt, SHA-1 i MD5, przy czym bcrypt jest zalecanym wyborem ze względów bezpieczeństwa.
Jak działa generowanie htpasswd
Generowanie wpisu htpasswd polega na zahashowaniu hasła tekstowego wybranym algorytmem i sformatowaniu go obok nazwy użytkownika. Sila wynikowego hashu zależy od algorytmu i jego konfiguracji.
- bcrypt ($2y$) — najbezpieczniejsza opcja, używa konfigurowalnego współczynnika kosztu (domyślnie 10), ktory kontroluje złożoność obliczeniowa każdego hashu, czyniaj ataki brute-force niepraktycznymi
- SHA-1 ({SHA}) — tworzy skrot SHA-1 zakodowany w Base64 z prefiksem {SHA}; szybszy niz bcrypt, ale znacznie slabszy wobec współczesnych atakow GPU
- MD5 ($apr1$) — niestandardowy wariant MD5 Apache z losowa sola; przestarzały format wciąż obsługiwany, ale niezalecany dla nowych wdrożeń z powodu znanych slabosci
Wypróbuj za darmo — bez rejestracji
Wygeneruj wpis htpasswd →Popularne zastosowania htpasswd
Uwierzytelnianie oparte na htpasswd jest szeroko stosowane do lekkiej kontroli dostępu, gdzie pełny system uwierzytelniania byłby nadmierny.
- Ochrona środowisk testowych — ograniczenie dostępu do środowisk przedprodukcyjnych, aby tylko czlonkowie zespołu i interesariusze mogli przeglacac prace w toku
- Bezpieczeństwo panelu administracyjnego — dodanie dodatkowej warstwy uwierzytelniania przed panelami administracyjnymi CMS, narzędziami do zarządzania bazami danych lub dashboardami monitoringu
- Dostęp do środowiska deweloperskiego — ochrona lokalnych lub wspoldzielonych serwerow deweloperskich przed nieautoryzowanym dostępem bez konfigurowania OAuth czy LDAP
Często zadawane pytania
Czy powinienem używać bcrypt, SHA-1 czy MD5 dla htpasswd?
Zawsze używaj bcrypt, gdy to możliwe. Bcrypt jest specjalnie zaprojektowany do hashowania hasel z konfigurowalnym wspolczynnikiem kosztu, ktory czyni go odpornym na ataki brute-force. SHA-1 i MD5 to szybkie funkcje hashujące, nieprzeznaczone do hasel — moga byc zlamane o rzedy wielkości szybciej niz bcrypt.
Gdzie powinienem umiescic plik htpasswd na serwerze?
Przechowuj plik htpasswd poza katalogiem głównym witryny, aby zapobiec jego udostępnianiu odwiedzającym. Typowa lokalizacja to /etc/apache2/.htpasswd lub /etc/nginx/.htpasswd. Następnie odwołaj sie do niego w konfiguracji serwera za pomoca AuthUserFile (Apache) lub auth_basic_user_file (Nginx). Nigdy nie umieszczaj go w publicznie dostepnym katalogu.
Czy uwierzytelnianie HTTP Basic jest wystarczająco bezpieczne dla produkcji?
Uwierzytelnianie Basic wysyła dane uwierzytelniające zakodowane w Base64 (nie zaszyfrowane) z każdym żądaniem, wiec musi byc zawsze używane przez HTTPS. Nawet z HTTPS brakuje mu takich funkcji jak zarządzanie sesjami, ograniczanie prędkości i blokowanie konta. Jest odpowiednie dla scenariuszy niskiego ryzyka, takich jak środowiska testowe lub narzędzia wewnętrzne, ale uwierzytelnianie użytkowników w produkcji powinno używać systemu z sesjami opartymi na tokenach.