Zabezpečení adresáře pomocí .htaccess (.htpasswd)

Potřebujete skrýt nějakou složku (adresář), do které nemá mít nikdo cizí přístup? Ukážeme si, jak ji pomocí .htaccess a .htpasswd uzamknout. Bez databází, bez frameworků, prostě rychle a funkčně.

Jen pozor – tahle metoda nechrání jen PHP, ale všechno, co v adresáři máte. Obrázky, PDF, videa… prostě úplně vše, co v tom adresáři máte.


1. Najděte správné místo

Nejdřív se přihlaste na FTP svého webu. O tom, jak na to, jsme psali samostatný návod

Připojte se přes FTP (nebo SSH, pokud můžete) a otevřete složku, kterou chcete uzamknout. Například:

/www/hosting/nasetajnadomena.cz/tajne

2. Vytvořte soubor .htaccess

V dané složce si vytvořte nový soubor s názvem .htaccess (ta tečka na začátku tam opravdu patří 😉).

Do souboru vložte následující kód:

AuthType Basic
AuthName "TajnaOblast"
AuthUserFile /www/hosting/nasetajnadomena.cz/tajne/.htpasswd
Require valid-user

Parametry si klidně upravte podle sebe:

  • AuthName je název chráněné oblasti,
  • AuthUserFile určuje cestu k souboru uživatele.

Tím vlastně říkáte: „Tahle složka je Tajná oblast a dovnitř pustím jen ty, kteří mají jméno a heslo.“

3. Vytvořte soubor .htpasswd

Nepoužívejte totožné přístupové údaje, jako v tomto kroku. Jedná se pouze o příklad.

Vytvořte v té samé složce soubor .htpasswd.

Ten slouží jako databáze uživatelů – kdo má přístup, ten se tam zapíše.

Ukázkový zápis:

# login: root, pass: root
root:$apr1$psi1B9A5$9x/383KfLwAlj1ak/omg4/

# login: admin, pass: admin
admin:$apr1$r250U/Lz$owvgPLKtqauz5YR6sG/kR/

Všimli jste si těch podivných hesel? To jsou hashe – takže i kdyby vám někdo soubor ukradl, skutečná hesla neuvidí.

Vygenerovat si je můžete jednoduše třeba zde: https://hostingcanada.org/htpasswd-generator/

TIP: Soubor .htpasswd nemusí být ve stejné složce jako .htaccess.
Klidně si ho dejte mimo veřejnou část webu a použijte ho pro víc adresářů najednou.

Jak moc je to bezpečné?

Upřímně? Tak napůl.

Jméno i heslo se posílá s každým požadavkem zakódované jen v Base64, ne zašifrované. Takže pokud běží na nešifrovaném HTTP, mohl by to někdo po cestě odposlechnout.

Řešení: Použijte HTTPS. S certifikátem je to v pohodě.

A ještě jeden drobný, ale podstatný detail – do uživatelského jména nedávejte dvojtečku (:). Apache ji totiž používá k oddělení jména a hesla.

Kdy se to hodí?

Tahle metoda je ideální, když:

  • potřebujete rychle uzamknout testovací prostředí,
  • chcete jednoduchou ochranu adminu,
  • nechce se vám řešit registrace a zapomenutá hesla,
  • vám stačí zabránit náhodným návštěvníkům nahlédnout tam, kam nemají.

Pro bankovní aplikaci to sice není, ale pro běžné použití je to naprosto v pohodě řešení.

Pomohl vám tento článek?

Podobné články