W tym artykule
Czym jest htpasswd?
Plik htpasswd to baza danych w pliku tekstowym uzywana przez serwery internetowe Apache i Nginx do przechowywania nazw uzytkownikow i zahashowanych hasel dla uwierzytelniania HTTP Basic. Kazdy wiersz zawiera nazwe uzytkownika i hash hasla oddzielone dwukropkiem, np. admin:$2y$10$abc... Plik zapewnia prosty sposob ochrony zasobow internetowych bez koniecznosci posiadania pelnego systemu uwierzytelniania.
Narzedzie htpasswd bylo pierwotnie czescia projektu Apache HTTP Server, ale format pliku stal sie standardem de facto obslugiwanym przez wiele serwerow internetowych, odwrotnych proxy i narzedzi deweloperskich. Nowoczesne generatory htpasswd obsluguja wiele algorytmow hashowania, w tym bcrypt, SHA-1 i MD5, przy czym bcrypt jest zalecanym wyborem ze wzgledow bezpieczenstwa.
Jak dziala generowanie htpasswd
Generowanie wpisu htpasswd polega na zahashowaniu hasla tekstowego wybranym algorytmem i sformatowaniu go obok nazwy uzytkownika. Sila wynikowego hashu zalezy od algorytmu i jego konfiguracji.
- bcrypt ($2y$) — najbezpieczniejsza opcja, uzywa konfigurowalnego wspolczynnika kosztu (domyslnie 10), ktory kontroluje zlozonosc obliczeniowa kazdego 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 wspolczesnych atakow GPU
- MD5 ($apr1$) — niestandardowy wariant MD5 Apache z losowa sola; przestarzaly format wciaz obslugiwany, ale niezalecany dla nowych wdrozen 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 dostepu, gdzie pelny system uwierzytelniania bylby nadmierny.
- Ochrona srodowisk testowych — ograniczenie dostepu do srodowisk przedprodukcyjnych, aby tylko czlonkowie zespolu i interesariusze mogli przeglacac prace w toku
- Bezpieczenstwo panelu administracyjnego — dodanie dodatkowej warstwy uwierzytelniania przed panelami administracyjnymi CMS, narzedziami do zarzadzania bazami danych lub dashboardami monitoringu
- Dostep do srodowiska deweloperskiego — ochrona lokalnych lub wspoldzielonych serwerow deweloperskich przed nieautoryzowanym dostepem bez konfigurowania OAuth czy LDAP
Czesto zadawane pytania
Czy powinienem uzywac bcrypt, SHA-1 czy MD5 dla htpasswd?
Zawsze uzywaj bcrypt, gdy to mozliwe. 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 hashujace, nieprzeznaczone do hasel — moga byc zlamane o rzedy wielkosci szybciej niz bcrypt.
Gdzie powinienem umiescic plik htpasswd na serwerze?
Przechowuj plik htpasswd poza katalogiem glownym witryny, aby zapobiec jego udostepnianiu odwiedzajacym. Typowa lokalizacja to /etc/apache2/.htpasswd lub /etc/nginx/.htpasswd. Nastepnie odwolaj 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 wystarczajaco bezpieczne dla produkcji?
Uwierzytelnianie Basic wysyla dane uwierzytelniajace zakodowane w Base64 (nie zaszyfrowane) z kazdym zadaniem, wiec musi byc zawsze uzywane przez HTTPS. Nawet z HTTPS brakuje mu takich funkcji jak zarzadzanie sesjami, ograniczanie predkosci i blokowanie konta. Jest odpowiednie dla scenariuszy niskiego ryzyka, takich jak srodowiska testowe lub narzedzia wewnetrzne, ale uwierzytelnianie uzytkownikow w produkcji powinno uzywac systemu z sesjami opartymi na tokenach.