🢂Jak zabezpieczyć dostęp do pliku za pomocą htaccess i htpasswd?
Wśród wielu metod ochrony informacji, zabezpieczenie dostępu do plików na serwerze internetowym przy pomocy hasła jest jedną z podstawowych i skutecznych technik.
Aby zabezpieczyć dostęp do pliku np. waznedane.csv
hasłem za pomocą pliku .htaccess
, wykonaj następujące kroki:
- Utwórz plik .htpasswd z hasłem użytkownika: Użyj narzędzia online lub komendy
htpasswd
(jeśli jest dostępna na serwerze) do wygenerowania zawartości pliku.htpasswd
. Plik ten powinien zawierać nazwę użytkownika i zaszyfrowane hasło. (o sposobie generowania hasła znajdziesz w dalszej części wpisu ) Na przykład:
login:$2y$05$GxD0sgkrtgYLuZkzX9uWpeVHCy5oOfc9027wlwDQBt3z96h2qoSw2
(Login: login, hasło: hasło, w bcrypt) ;)
- Umieść plik .htpasswd poza publicznym katalogiem serwera: Najlepiej umieścić plik
.htpasswd
poza katalogiem dostępnym publicznie (np. w katalogu użytkownika/home/user/.htpasswd
), aby nie był dostępny z poziomu przeglądarki internetowej. - Modyfikuj plik .htaccess:
W pliku
.htaccess
, który znajduje się w katalogu z plikiemwaznedane.csv
lub w katalogu nadrzędnym, dodaj następujące dyrektywy:
<Files "waznedane.csv">
AuthGroupFile /dev/null # Wyłącza użycie pliku grupy użytkowników
AuthType Basic # Ustawia typ autentykacji na podstawową (Basic)
AuthUserFile /home/user/.htpasswd # Wskazuje ścieżkę do pliku z hasłami użytkowników
AuthName "Podaj login i hasło" # Ustawia wiadomość wyświetlaną w oknie dialogowym logowania
Require valid-user # Wymaga, by dostęp miał tylko zautoryzowany użytkownik
ErrorDocument 401 "Podaj login i hasło" # Ustawia własną wiadomość błędu dla kodu 401 (Unauthorized)
</Files>
Zastąp /home/user/.htpasswd
rzeczywistą ścieżką do Twojego pliku .htpasswd
np. /home/user/domains/ZabezpieczonaDomena.pl/.htpasswd/.htpasswd
.
Po zastosowaniu się do tych kroków, dostęp do pliku waznedane.csv
będzie wymagał podania nazwy użytkownika i hasła. Wiadomość "Ostrzeżenie" to tekst, który zostanie wyświetlony użytkownikowi w oknie dialogowym autoryzacji.
Generowanie pliku autoryzacji htpasswd
Polecenie htpasswd
służy do tworzenia i aktualizacji plików używanych do przechowywania nazw użytkowników i haseł dla podstawowej autoryzacji Apache HTTP Server. Oto jak można użyć tego polecenia:
-
Instalacja: Na wielu systemach
htpasswd
jest dostępne w ramach pakietu Apache HTTP Server. Upewnij się, że masz zainstalowane narzędzia Apache. -
Tworzenie nowego pliku .htpasswd: Aby utworzyć nowy plik
.htpasswd
i dodać do niego użytkownika (login), użyj polecenia:htpasswd -c /home/user/.htpasswd nazwa_użytkownika
Flagę
-c
stosuje się tylko przy tworzeniu nowego pliku. Podczas wykonywania tego polecenia zostaniesz poproszony o wprowadzenie i potwierdzenie hasła dla użytkownika. -
Dodawanie lub aktualizacja użytkownika w istniejącym pliku .htpasswd: Aby dodać nowego użytkownika do istniejącego pliku
.htpasswd
lub zaktualizować hasło istniejącego użytkownika, użyj polecenia bez flagi-c
:htpasswd /home/user/.htpasswd nazwa_użytkownika
Po wprowadzeniu polecenia zostaniesz poproszony o wprowadzenie nowego hasła dla użytkownika.
-
Używanie różnych algorytmów szyfrowania: Możesz również określić algorytm szyfrowania hasła za pomocą flagi
m
(MD5),B
(bcrypt, zalecany ze względów bezpieczeństwa),d
(CRYPT) lubs
(SHA). Na przykład, aby użyć bcrypt przy tworzeniu nowego pliku-c
, użyj polecenia:htpasswd -B -c /home/user/.htpasswd nazwa_użytkownika
-
Usuwanie użytkownika: Aby usunąć użytkownika z pliku
.htpasswd
, możesz użyć poleceniased
lub ręcznie edytować plik, usuwając odpowiednią linię.sed -i '/nazwa_użytkownika/d' /home/user/.htpasswd
Opis działania tego polecenia:
sed
: Narzędzie służące do przetwarzania tekstu w strumieniu.i
: Opcja, która pozwala na modyfikację pliku "w miejscu", czyli bez konieczności tworzenia dodatkowego pliku tymczasowego.'/uzytkownik/d'
: Wyrażenie, które instruujesed
do usunięcia (d
) wszystkich linii zawierających frazęuzytkownik
./ścieżka/do/.htpasswd
: Ścieżka do pliku.htpasswd
, z którego ma zostać usunięty użytkownik.
Uwaga
Pamiętaj, aby zawsze zabezpieczyć plik .htpasswd
przed dostępem nieautoryzowanym, umieszczając go poza publicznym katalogiem serwera i odnosząc się do niego w konfiguracji .htaccess
lub konfiguracji serwera.