W świecie internetu nie wszystko musi być publiczne – czasem zależy nam na tym, by pewne elementy naszej strony czy serwera były dostępne tylko dla wybranych osób, najlepiej po podaniu hasła. Może to być panel administracyjny, folder z dokumentacją projektu, prywatne dane lub pliki testowe. W takich przypadkach najlepszym rozwiązaniem (szczególnie na serwerach opartych o Apache) jest zabezpieczenie folderu hasłem przy pomocy pliku .htaccess
i .htpasswd
.
To prosta, ale potężna metoda, która nie wymaga PHP ani baz danych, a działa na poziomie serwera – czyli jeszcze zanim w ogóle załaduje się jakikolwiek kod strony. Zobacz, jak to działa krok po kroku.
Co będzie Ci potrzebne?
- Dostęp do serwera Apache (większość hostingów go obsługuje),
- Możliwość edycji lub utworzenia pliku
.htaccess
w folderze, który chcesz zabezpieczyć, - Plik
.htpasswd
, czyli zbiór użytkowników i ich zahashowanych haseł, - Podstawowa znajomość FTP lub menedżera plików w panelu hostingowym.
Krok 1: Zdecyduj, który folder chcesz zabezpieczyć
W pierwszej kolejności musisz określić, który katalog chcesz objąć ochroną. Może to być np.:
/admin
– jeśli tworzysz panel kontrolny strony,/backup
– jeśli masz tam archiwalne dane,/testy
– jeśli to strefa robocza dla developera.
Wejdź do tego folderu przez FTP lub menedżer plików i utwórz w nim plik .htaccess
, jeśli jeszcze go nie ma.
Krok 2: Utwórz plik .htaccess
z regułami ochrony
W pliku .htaccess
wklej poniższy kod:
AuthType Basic
AuthName "Strefa chroniona"
AuthUserFile /pełna/ścieżka/do/.htpasswd
Require valid-user
Co oznacza każda linia?
AuthType Basic
– wskazuje, że używamy prostego uwierzytelniania HTTP.AuthName
– tekst wyświetlany użytkownikowi w oknie logowania.AuthUserFile
– ścieżka do pliku.htpasswd
, w którym znajdują się dane logowania.Require valid-user
– dostęp mają tylko użytkownicy z listy.
Uwaga: ścieżka bezwzględna, nie względna!
Tutaj najwięcej osób popełnia błąd. W AuthUserFile
musisz wpisać pełną ścieżkę systemową do pliku .htpasswd
, np.:
/home/nazwa_uzytkownika/public_html/sekretna_strefa/.htpasswd
Nie możesz użyć skrótu ./
albo ~/
.
Jak sprawdzić pełną ścieżkę? Czasami znajdziesz ją w panelu hostingowym lub możesz stworzyć plik PHP z komendą echo __FILE__;
i odczytać z niego katalog.
Krok 3: Utwórz plik .htpasswd
z hasłem
Do stworzenia tego pliku najlepiej użyć generatora haseł .htpasswd
dostępnego online (np. htpasswdgenerator.net – tylko do celów lokalnych!).
Przykładowy wpis w .htpasswd
wygląda tak:
admin:$apr1$83jdja$wHwXdoIU5xP0YmM3A1H/v0
Pierwsza część to nazwa użytkownika, a druga – zahashowane hasło (nie trzymaj go w postaci zwykłego tekstu!).
Zapisz ten plik jako .htpasswd
poza katalogiem publicznym, np. w katalogu nadrzędnym względem public_html
, aby nie był dostępny przez przeglądarkę.
Krok 4: Sprawdź, czy działa
Teraz wejdź w przeglądarce na adres folderu, który chronisz – np. twojastrona.pl/sekretna_strefa
. Powinno pojawić się klasyczne okienko logowania z pytaniem o użytkownika i hasło. Po poprawnym zalogowaniu uzyskasz dostęp. W przeciwnym razie – błąd 401.
Co warto wiedzieć?
- Możesz dodać wielu użytkowników – każdy w osobnej linii w
.htpasswd
. - Możesz przypisywać uprawnienia do konkretnych nazw użytkowników (zamiast
valid-user
, wpisz np.user admin
). - Ta metoda działa tylko na serwerach Apache i tam, gdzie jest aktywny
mod_auth
. - Nie działa na darmowych hostingach bez dostępu do
.htaccess
.
Ciekawostka
Hasła w .htpasswd
możesz generować również lokalnie przez terminal na systemie Linux lub Mac za pomocą komendy:
htpasswd -c .htpasswd nazwa_uzytkownika
Na Windowsie – jeśli masz dostęp do Apache w XAMPP lub WAMP – też możesz to zrobić w konsoli.
Podsumowanie
Zabezpieczenie folderu hasłem za pomocą .htaccess
to jedna z najprostszych i najskuteczniejszych metod ochrony poufnych danych na serwerze. Działa niezależnie od języka programowania strony, jest szybka w konfiguracji i nie wymaga żadnej logiki aplikacji – całość rozgrywa się po stronie serwera Apache.
W kilku krokach możesz stworzyć prywatną strefę dostępną tylko po podaniu loginu i hasła, zabezpieczyć pliki testowe lub chronić panel administracyjny przed niepowołanymi gośćmi.
Ostatnie komentarze