🍪 Można ciasteczko?

Ta strona chce wykorzystywać pliki cookie do analizowania ruchu oraz mierzenia skuteczności i personalizacji reklam zgodnie z polityką prywatności. Zgadzasz się?

PORADNIKI

8 min. czytania

Jak zabezpieczyć stronę hasłem? .htpasswd

.htpasswd

Fot. Storyset

Jak działa plik htpasswd i do czego służy? Jak zabezpieczyć stronę internetową hasłem za pomocą pliku .htpasswd? Instrukcja krok po kroku.

Spis treści
Serwer

Konieczności wpisania hasła dostępu, aby wyświetlić określoną zawartość, to bardzo przydatne rozwiązanie. Stosowane jest zarówno w przypadku ochrony całych stron, jak i tylko pojedynczych podstron. Warto posługiwać się plikami ukrytymi, aby w odpowiedni sposób chronić wrażliwe dane. Jak jednak robić to skutecznie, by informacje dotarły wyłącznie do wskazanych użytkowników? Przy pomocy .htpasswd możesz zakodować każdą zawartość. Korzystając z poniższego schematu i instrukcji, zrobisz to szybko i bez większego problemu.

Pliki .htpasswd a ograniczenie dostępu do strony

Nazwy użytkowników i hasła mogą być wymagane, aby konkretni użytkownicy otrzymali dostęp do określonych zasobów. Kiedy wykorzystywana jest ta metoda ochrony danych? Jest wygodna w sytuacji, gdy nie wszystkie informacje na serwerze muszą być powszechnie dostępne dla każdego. Dobrze sprawdza się przy udostępnianiu np.:

  • dokumentów pośrednikom,
  • nowych wersji oprogramowania dla części odbiorców,
  • materiałów wewnętrznych i szkoleniowych.

Oczywiście to tylko przykłady, a praktycznych zastosowań tego rozwiązania jest o wiele więcej. Utworzenie pliku .htpasswd może chronić bowiem zarówno konkretne pliki, jak i podstrony lub całe strony internetowe. Usługa ta dostępna jest praktycznie w każdym hostingu. Zależnie od ustawień, można wprowadzić ją z wykorzystaniem:

  • panelu hostingowego
  • generatora SSH,
  • generatora online

W przypadku tworzenia i konfigurowania pliku .htpasswd ważne są nieco bardziej zaawansowane umiejętności obsługi komputera. Nie musisz być programistą i znać się na kodowaniu. O wiele łatwiej Ci natomiast będzie, jeśli masz doświadczenie w zarządzaniu witrynami online. Alternatywnym rozwiązaniem jest włączenie ochrony bezpośrednio z poziomu DirectAdmin czy cPanel. To o wiele łatwiejsze, a także szybsze rozwiązanie, z którym na pewno sobie poradzisz.

Poniżej szczegółowo opisaliśmy każdy z wariantów umożliwiających wprowadzenia hasła na podanej stronie. Pomoże Ci to uzyskać odpowiednią ochronę swoich katalogów.

Hasło na katalogu w DirectAdmin i cPanel

Chcesz ustawić hasło na pojedynczym katalogu lub całej stronie w DirectAdmin lub cPanel? Nie zajmie Ci to wiele czasu. W obu przypadkach wystarczy jedynie, że połączysz się ze swoim serwerem FTP (zob. Jak połączyć się z FTP w Windows 10 i 11? Instrukcja). Pomoże Ci w tym menadżer plików. Zaloguj się zatem na swoje konto, a następnie postępuj zgodnie z naszymi dalszymi instrukcjami.

DirectAdmin

W DirectAdmin przejdź do zakładki „Zarządzanie plikami”. Poniżej widać, gdzie może się ona znajdować. Jej położenie i nazwa mogą się jednak nieco różnić, zależnie od hostingodawcy.

Na ekranie pojawią się wszystkie dane, które są przechowywane na Twoim serwerze. Wybierz spośród nich folder, na który chcesz nałożyć hasło. Następnie najedź na niego kursorem i naciśnij prawy przycisk myszy. Wśród dostępnych opcji powinno pojawić się „Chroń”, „Zabezpiecz”, „Zabezpiecz hasłem” lub podobne. Sprawi to, że wyświetli się kolejne okno, w którym musisz podać:

  • Komunikat – tekst, który pojawi się na ekranie, gdy ktoś będzie chciał wywołać chronioną zawartość,
  • Nazwę użytkownika – login niezbędny do zalogowania,
  • Hasło – jego podanie przez użytkownika będzie niezbędne, aby uzyskać dostęp do zawartości chronionego folderu.

Gdy uzupełnisz te dane, musisz jedynie nacisnąć przycisk „Chroń”.

cPanel

W cPanel odpowiednią opcję znajdziesz w zakładce umożliwiającej zarządzanie plikami. Zależnie od usługodawcy może ona nosić nazwę np. „Ochrona prywatności katalogów” lub podobnie.

Na ekranie pojawi się lista katalogów, podoba do tej z DirectAdmin. Wybierz ten, który chcesz zabezpieczyć hasłem. Następnie naciśnij „Edytuj” i zaznacz opcję „Chroń ten katalog hasłem”. Pod spodem wpisz hasło niezbędne do uzyskania dostępu do danych informacji. Gdy je zatwierdzisz, możesz przejść do zakładki „Utwórz użytkownika”. Tam możesz stworzyć profile osób, które będą mogły zalogować się do folderu. Wypełnij tam sekcje:

  • Nazwę użytkownika,
  • Nowe hasło,
  • Potwierdź hasło.

Jeśli wszystko pójdzie zgodnie z planem, na ekranie pojawi się komunikat potwierdzający wprowadzenie właściwych zabezpieczeń. Od tej pory każdy, kto wywoła zabezpieczoną przez Ciebie zawartość, będzie musiał podać odpowiedni login i hasło.

Korzystanie z .htpasswd przy użyciu generatora online

Pliki .htpasswd oraz .htaccess dają możliwość ograniczenia dostępu do wybranego katalogu. Zakaz wstępu obejmuje w ich przypadku wszystkich użytkowników, którzy nie znają danych logowania. Dopiero odpowiednie hasła dostępu i loginy pozwalają otworzyć szczególnie chronione informacje. Jak takie zabezpieczenia jednak wprowadzić w praktyce?

Tworzenie i konfiguracja .htaccess

Jak ograniczyć widoczność konkretnego folderu? Przede wszystkim musisz umieścić plik .htaccess w katalogu wyżej. Dzięki temu wszystkie znajdujące się w nim foldery i dane zostały zablokowane. Opisywany plik zawierać musi formułę:

AuthName "Konieczne podanie danych logowania"
AuthType Basic
AuthUserFile /katalog/.htpasswd
Require valid-user

Fragment AuthName może być dowolnym tekstem. Wyświetli się on na ekranie użytkownika, gdy będzie on usiłować wywołać katalog objęty zabezpieczeniami. Zazwyczaj widnieje tam zatem informacja o specjalnych zabezpieczeniach danych. Możesz wspomnieć też o konieczności podania loginu albo nazwy użytkownika.

W linii AuthUserFile należy podać pełną ścieżkę, prowadzącą do pliku .htpasswd. Może to być na przykład:

AuthUserFile /web/przykladowy-serwer/przykladowy-katalog/.htpasswd

Adres ten nazywany jest ścieżką względną. Gdy zatem plik .htpasswd znajduje się wyżej w strukturze niż .htaccess, musisz podać AuthUserFile../.htpasswd.

Oczywiście plik .htaccess działa na serwerach Apache (i LiteSpeed). W przypadku serwerów opartych o Nginx formuła pliku konfiguracyjnego będzie następująca:

location  /  {
  auth_basic  "Konieczne podanie danych logowania";
  auth_basic_user_file  /ścieżka/do/htpasswd;
}

Tworzenie .htpasswd

Kolejnym krokiem jest zrobienie pliku .htpasswd. Tworzy się go według ściśle określonego schematu:

przykladowa-nazwa-uzytkownika:przykladowe-haslo-dostepu

Plik ten będzie zawierał nazwy użytkowników, którzy powinni mieć dostęp do chronionych danych. Wraz z loginami podane tam będą także ich hasła. Co istotne, segment „przykladowe-haslo-dostepu” jest zawsze odpowiednio zakodowane. Odpowiada za to właściwy algorytm kodowania (funkcja skrótu), np.:

  • crypt(),
  • MD5,
  • SHA1.

Szczególnie istotna jest lokalizacja pliku .htpasswd. Ze względów bezpieczeństwa powinien on znajdować się poza katalogiem głównym. Wynika to z faktu, że dzięki takiemu położeniu przeciętny użytkownik nie będzie miał do niego dostępu.

Druga, istotna uwaga, dotyczy struktury samego pliku i sposobu zapisu wprowadzanych do niego danych. Każdy wiersz powinien być zakończony w nim znakiem LF (ASCI 010). W praktyce zatem w jednej linii umieszczony będzie jeden, konkretny użytkownik i przypisane do niego hasło. Kolejni natomiast trafią do następnych linii poniżej.

Wykorzystanie generatora online do kodowania haseł

W internecie znajdziesz dużo rozmaitych generatorów online. Wszystkie działają na bardzo podobnej zasadzie. Wystarczy tylko, że wpiszesz w nich listę użytkowników oraz hasła. Następnie jednym przyciskiem przechodzisz do generowania pliku.

Jednym z takich serwisów jest popularny aspirine.org/htpasswd_en.html. Aby z niego skorzystać, nie musisz pobierać żadnych programów na swój komputer. Wszystko odbywa się za pośrednictwem przeglądarki. W lewej kolumnie wpisz dane osób, które będą mogły otworzyć plik przy użyciu podanych loginów i haseł. Może być to zarówno jeden użytkownik (np. Ty jako administrator), jak i cała grupa. Następnie wybierz przycisk „Generate passwords”.

Teraz musisz wybrać sposób kodowania w prawym oknie. Może być to już wyżej wspominany crypt(). Na końcu naciśnij „Generate htpasswd content”.

Wygenerowany plik .htpasswd

Przeglądarka rozpocznie pobieranie pliku z danymi na dysk Twojego komputera. Gdy ten proces dobiegnie końca, wklej go do pliku .htpasswd. Na końcu wyślij go – wraz z plikiem .htaccess – do katalogu, do którego dostęp chcesz ograniczyć. Pamiętaj, by przed nazwami plików umieścić obowiązkowo kropki. W innym przypadku wystąpi problem z ich odczytem.

Co się stanie, jeśli ktoś będzie chciał wywołać zablokowane dane bez podania danych logowania? W takim przypadku na ekranie nieuprawnionego użytkownika wyświetli się błąd. Zazwyczaj zobaczy jeden z kodów HTTP, a mianowicie: HTTP 401 – Unauthorized: Authorization Required.

Korzystanie z .htpasswd przy użyciu generatora SSH

Alternatywnym rozwiązaniem jest skorzystanie z połączenia z serwerem przez SSH. Pamiętaj jednak, że nie każdy hostingodawca udostępnia tę formę nawiązywania połączenia wszystkim klientom. Często uruchomić ją można tylko w droższych pakietach lub za dodatkową opłatą. Najpierw zatem upewnij się, czy na pewno jest to rozwiązanie dostępne dla Ciebie.

W tym przypadku nie musisz korzystać z żadnego generatora haseł online.

Aby zabezpieczyć folder hasłem z wykorzystaniem .htpasswd z linii poleceń, musisz utworzyć dwa pliki: .htaccess i .htpasswd. Oto instrukcja krok po kroku dla systemów Linux/Unix:

1. Przejdź do folderu, który chcesz zabezpieczyć, używając polecenia cd:

cd /ścieżka/do/folderu

2. Utwórz plik .htaccess za pomocą edytora tekstowego, np. nano lub vi jeśli go nie posiadasz:

nano .htaccess

3. Dodaj następujące linie do pliku .htaccess:

AuthType Basic
AuthName "Dostęp zastrzezony"
AuthUserFile /ścieżka/do/pliku/.htpasswd
Require valid-user 

Zamień /ścieżka/do/pliku/.htpasswd na rzeczywistą ścieżkę do pliku .htpasswd, który utworzysz w kolejnych krokach.

4. Zapisz plik i zamknij edytor.

5. Teraz utwórz plik .htpasswd. W konsoli wpisz:

htpasswd -c /ścieżka/do/pliku/.htpasswd nazwa_użytkownika

Podmień /ścieżka/do/pliku/.htpasswd na rzeczywistą ścieżkę, gdzie chcesz przechowywać plik .htpasswd, a nazwa_użytkownika na nazwę użytkownika, którą chcesz utworzyć.

6. Po wpisaniu polecenia zostaniesz poproszony o wprowadzenie hasła dla tego użytkownika. Wprowadź hasło i potwierdź je.

7. Teraz folder jest zabezpieczony hasłem. Aby dodać więcej użytkowników, powtórz krok 5 bez opcji -c.

Pamiętaj, że te instrukcje są dla systemów Linux/Unix. Jeśli używasz innego systemu, proces może się nieznacznie różnić.

Jak zabezpieczyć tylko jeden plik, a nie całą stronę?

Co zrobić, jeśli chcesz wprowadzić dodatkowe zabezpieczenia tylko dla jednego pliku? Załóżmy, że znajduje się on w tym samym katalogu co plik .htaccess. W takim przypadku musisz skorzystać z kodu:

AuthType Basic
AuthName "Zakaz wstepu do przykladowego folderu"
AuthUserFile .htpasswd
<Files przykladowa-nazwa-pliku.php>
require valid-user
</Files>

Podana powyżej ścieżka do chronionego pliku lub .htpasswd może być oczywiście inna. Dzięki temu reszta danych nie zostanie dodatkowo zakodowana. Użytkownicy nadal będą mieli więc do nich niezmieniony dostęp.

Zobacz też: Jak zabezpieczyć WordPressa? Instrukcja