HTTP Basic auth pomocí htaccess

Bezpečnost, htaccess, Tipy & triky

Naposledy jsem Vám ukázal, jak jednoduše zamezit přístupu pomocí HTTP autentizace ve skrpitu PHP. V tomto článku nebudeme vyžadovat ověření u souboru, ale u celého adresáře pomocí htaccess.

HTTP Basic auth pomocí htaccess

Článek z předchozího týdne ukázal metodu, jak vyžadovat autentizaci jediného PHP souboru. Pokud vás zajímá jak HTTP Basic Auth funguje, přečtěte si také předchozí článek, vysvětluje i něco z teorie.

Pokud chcete takto omezit přístup na celý adresář, včetně souborů, je vhodné tuto techniku udělat pomocí souborů .htaccess a .htpasswd. Ověření bude požadováno i při přístupu k běžným souborům jako PDF apod.

.htaccess a .htpasswd

Do adresáře, do kterého chceme omezit přístup, vložíme soubor .htaccess s následujícím obsahem. Pokud soubor již máte, stačí tento kód vložit na začátek.

AuthType Basic
AuthName "Area51"
AuthUserFile /absolute/path/to/.htpasswd
Require valid-user

Soubor si můžete také nechat vygenerovat na stránce htaccesstools.com. Dejte si pozor na absolutní cestu k souboru .htpasswd! Pokud bude relativní, server vám s největší pravděpodobností vrátí chybu 500. Níže najdete jednoduchý PHP skript pro zjištění absolutní cesty.

.htpasswd

Soubor .htpasswd obsahuje na každém řádku jméno a heslo, jakým je možné se přihlásit. Protože heslo je zahashované, doporučuji opět využít generátor na htaccesstools.com. Ukázka souboru může vypadat například takto:

# login: root, pass: root
root:$apr1$psi1B9A5$9x/383KfLwAlj1ak/omg4/
# login: admin, pass: admin
admin:$apr1$r250U/Lz$owvgPLKtqauz5YR6sG/kR/

Tento soubor nemusí být umístěn ve stejném adresáři jako .htaccess, protože vždy musí být uvedena absolutní adresa. Tímto způsobem můžete zaheslovat více adresářů jedinou sadou jmen a hesel.

Po uložení pří přístupu na uživatele vyskočí stejný dialog jako v případě využití s PHP. Prohlížeč si opět údaje uloží a odesílá je s každým přístupem. Uživatel tedy nebude obtěžován při každém requestu.

HTTP Basic auth formulář

Zjištění absolutní adresy

Na běžném hostingu se po připojení na FTP server dostanete pouze do složky, a tak adresu kterou zjistíte je vždy relativní. Zjištění absolutní adresy lze velmi jednoduše zjistit PHP skriptem, který vložíte do adresáře, kde chcete mít uložen soubor .htpasswd

echo dirname(__FILE__)."/.htpasswd";

Úvodní fotka převzata z Freepik

K tomuto článku již není možné přidávat další komentáře