Potřebujete jednoduchým způsobem zaheslovat web, aby se na něj nedostal nikdo, koho tam nechcete? Kvůli přihlašování nemusíte vytvářet skript v PHP a řešit cookies či sessions, stačit vám na to bude doslova pár řádků v .htaccess a minutka vašeho času!

Tento způsob přihlašování je v zásadě velmi primitivní a hodí se pro případy, kdy například připravujete nový web a chcete do testovací verze pustit pouze konkrétní uživatele. Zároveň zamezí přístupu i googlebotovi a dalším robotům procházejícím web.

Do souboru .htaccess v kořenovém adresáři vašeho webu (pokud jej ještě nemáte vytvořený, tak jej vytvořte) přidejte následující 4 řádky:

V druhém řádku můžete změnit text, kterým se pak hlásí prohlížeč při pokusu o přístup k webu, například:

Třetí řádek specifikuje cestu k souboru .htpasswd, který obsahuje údaje o uživatelích a heslech. Zde je potřeba uvést absolutní cestu, s relativní cestou to nebude fungovat (a web vám bude hlásit chybu 500). Pokud absolutní cestu neznáte, zjistíte ji například pomocí následujícího php skriptu:

Pokud jej umístíte do stejného adresáře jako soubor .htaccess, tak vám tento skript poradí absolutní cestu do tohoto adresáře (v našem případě by to bylo „/cesta/k/souboru“).

V souboru .htpasswd je nutné uvést alespoň jednoho uživatele a jeho heslo (může jich však být i více – každý uživatel patří na samostatný řádek) ve tvaru uživatel:heslo. Na vytvoření doporučuji htpasswd generátor, který hesla rovnou zahashuje podobě pomocí funkce MD5. Výsledkem pak bude soubor, který bude mít tento obsah:

Řetězec $apr1$Q/R3WQ5a$luazoxFlL8soxAnQfjvfX/ si samozřejmě nemusíte pamatovat, jako heslo zadáte původní řetězec, který jste do htpasswd generátoru zadali (v mém případě je to „heslo123456“).

MD5 je funkce, která z libovolně dlouhého textu vytvoří jeho otisk (hash) o délce 128 bitů. Výhodou pak je, že jakákoliv drobná změna na vstupním textu vytvoří zásadně odlišný otisk na výstupu. MD5 není šifra, ale hashovací funkce, což znamená, že z výstupního textu (otisk) nelze zpětně rekonstruovat původní zprávu (zatímco u šifry to lze). V dnešní době se již nedoporučuje používat, protože poskytuje jen nízkou formu zabezpečení, ale na zaheslování jednoduchých stránek se hodí.

Jedinou důležitou prerekvizitou pro tento způsob zamezení přístupu k webu je, že musí běžet na webserveru Apache. V případě, že používáte nginx, je potřeba použít jiný postup.