V tomto článku se dovíte jak pomocí .htpasswd (a .htaccess) zaheslovat stránku. Nedávno jsem zaheslovával své fotoalbum a tak jsem se rozhodl, že se o návod jak zaheslovat takovou stránku podělím. Všechno je v celku jednoduché, ale i tak se Vám pokusím sepsat maximum. Třeba se to bude někomu z Vás někdy hodit. Člověk nikdy neví.
Pár slov o tomto způsobu zaheslování
.htaccess je nejbezpečnější zaheslování stránek
Podle mého nejlepší, nejbezpečnější a zároveň jednoduché zaheslování stránek. Všechno se dá zvládnout během 2 minut. Zaheslování webu je opravdu hračka. Přístup pod heslem můžete využít například u statistik Vaší stránky, fotoalba a vlastně na všech konkrétních stránkách. Prostě na všechno. Ohromným plusem je také to, že se jedná o nejbezpečnější způsob zaheslování stránek a přitom je to tak jednoduché.
Jak tedy zaheslovat stránku?
Vytvořte si soubory .htaccess a .htpasswd. Podrobný návod jak takový soubory vytvořit najdete v článku Použití souboru .htaccess – zde na blogu. Do .htaccess zapište …
AuthUserFile /home/www/vas-web.cz/www/.htpasswd
AuthName "Text ..."
AuthType Basic
require valid-user
a do souboru .htpasswd zadáte uživatelské jméno a heslo pro přihlášení. Heslo musí být zašifrované. To učiňte třeba tady. Finální verze souboru .htpasswd by tedy mohla vypadat asi nějak takto:
Nikol:NTpyGmz5YdvQE
Petr:a2H3HDbwGs82k
Karlos:aGRZIl8tM7Pvk
Jak vidíte uživatelským jmen můžete do souboru .htpasswd zapsat nekonečno. Oba soubory nahrajte do složky, kterou chcete zaheslovat. Všechny soubory a složky budou vyžadovat pro přístup heslo. Pro odhlášení a nové vyžádání hesla pak stačí zavřít prohlížeč (ne panel, či záložku).
Zákaz výpisu složky
V některých případech mohou být soubory přístupné při zadání přesné adresy a tak by celé zaheslování bylo zbytečné. Proto doporučuji do souboru .htaccess také zapsat tento řádek ,který zakáže procházení složek a souborů.
Options -Indexes
Naopak zadáním +Indexes procházení složek a souborů povolíte. To ovšem v tomto případě silně nedoporučuji.
Zjištění adresy pro AuthUserFile
Pro správnou funkčnost potřebujeme zadat správnou adresu na soubor .htpasswd. Tu zjistíme například pomocí PHP souboru. Vytvořte tedy PHP soubor (nebo si jej rovnou stáhněte) a zapište do něj toto:
<?php
phpinfo();
?>
Poté jej nahrajte na Vás server, otevřete a vyhledejte si řádek SCRIPT_FILENAME. Tuto adresu zapište do Vašeho .htaccess souboru do políčka AuthUserFile. Cesta ovšem musí končit souborem .htpasswd v kterém jsou zapsané Vaše přihlašovací údaje.

Nemáš čas? Stahuj …
Vždy se najde někdo, kdo nemá příliš času. Hlavně pro ty jsem zde připravil verzi na stažení. Jediné, co musíte udělat je to, že změníte adresu AuthUserFile a vygenerujete si nové heslo. V základě jsou přihlašovací údaje celkem dobře zapamatovatelné. Jméno je admin a heslo je 12345.
Alternativy zaheslování stránky
Pokud by Vám tento způsob nevyhovoval, či připadal málo bezpečný, můžete vyzkoušet další možnosti zaheslování stránky. Více už třeba v článku od Dušana. Najdete v něm určitě užitečné rady na různé způsoby zaheslování stránek. Ať se daří :)
{ 39 comments… read them below or add one }
Toto je hodně dobrý a užitečný návod, chválím. :-)
Chtěl bych se zeptat, zda bys dokázal tímto způsobem zaheslování zaheslovat články v určité rubrice WordPressu. Určitě to půjde, ale chce to nějak šikovně napsat podmínku pro kontrolu rubriky, na což je také potřeba šikovný člověk. A to já nejsem. :-)
Díky. Snažil jsem se vytvořit opravdu kvalitní návod jak zaheslovat stránku pomocí .htpasswd – povedlo se. Alespoň doufám. Snažil jsem se všechno vysvětlit jasně a poukázat i na další věci, které třeba ostatní návody postrádají. Nicméně k tvé otázce. WordPress už zaheslování konkrétního článku podporuje a tak by to byla zbytečná práce. Tenhle způsob zaheslování (který popisuji v článku) se spíše hodí na osobní fotoalba, statistiky návštěvnost a bůh ví co ještě … :)
Mám Windows Server a nejede mi to tam. Co dělám špatně?
Těžko říct. Nemůžu vědět, co je za chybu, když to nevidím. Pokud jsi to zaheslování stránky udělal opravdu podle návodu a soubory (.htaccess a .htpasswd) obsahují to, co mají – mělo by to fungovat. Určitě by mi pomohlo kdyby jsi mi řekl, co ti to hlásí. Pokud je to chyba 500 bude zřejmě špatně zadaná adresa k souboru .htpasswd. Překontroluj tedy správnost řádku AuthUserFile.
Jseš si opravdu jist, že .htaccess funguje i na Windows Server? Nebeží to náhodou jenom na Apači?
Na Windows Server nefunguje. Máš pravdu. Tenhle druh zaheslování stránek funguje jen na serveru Apache. .htaccess a .htpasswd jsou Linuxové soubory (konfigurační). Nevím kde jsem nechal hlavu, když jsem psal předešlí komentář. Díky za upozornění ;)
A zrovna teď se mi to hodilo. Daleko jednodušší něž přes PHP. Dík, nikdy jsem to přes htaccess nezkoumal.
Jsem rád, že návod našel využití. Je to opravdu jednoduché a zároveň bezpečné zaheslování stránek. Miluju věci, které jsou bezpečné a jednoduché :P
Juj. Já to nechápu. Kde mám vzít ten .htaccess? Dík za odpověď :-).
Kde vzít .htaccess? Ten najdeš někde v adresářích nebo podadresářích na FTP (File Transfer Protocol). Musíš mít tedy přístup k FTP. Pokud máš blog někde na něčem typu něco.blog.cz a podobné – tak k takovému souboru přístup nemáš (myslím). Takže zaheslování stránky tímto způsobem pro tebe není možné.
Jj díky, ale já ani nevím kde jsou ty podadresáře. Já se v PC vyznám, ale tohle? To je složité xD.
Skvělý, že jsi sem napsal jak zaheslovat stránky. Je to fakt o hodně jednodušší, než přes PHP. Jenom nechápu jedinou věc-nějak mi uniklo, jak nadefinovat přesměrování na stránku po zadání správného hesla. Vždy- ať už zadám správné nebo špatné heslo se nic nestane a cedulka vyjede znovu. Nemám nikde napsanou adresu, kterou chci otevřít po zadání správného hesla. Jak to mám udělat?
Trochu jsem na tuhle věc v článku zapomněl. Adresa, která se zobrazí se nikam nepíše. Soubory mají být v ní. Chci říct, že pokud chceš zaheslovat složku WWW – vložíš oba soubory do ní. Po zadání správného hesla se složka zpřístupní.
Ohledně té vyskakující cedulky – zkus si překontrolovat adresu AuthUserFile. Potom koukni na správnost hesla. Tuším, že budeš mít špatně zašifrované heslo (nebo píšeš nesprávné).
A to heslo do té tabulky mám psát to normální, nebo to zašifrovaný? Ohledně té složky to vím. Kontroloval jsem to, ale chybu jsem neodhalil. Šifrování hesla jsem použil to, na který máš tady odkaz. Jestli chceš můžu ti mailem poslat heslo na administraci a můžeš na to mrknout. Nemůžu na to přijít :(. Díky.
Heslo do souboru dej to zašifrované. Mělo by to fungovat (generátor jsem zkontroloval a funguje). Jestli chceš pošli mi to všechno mailem (najdeš v sekci kontakt). Budu potřebovat jen údaje na FTP. Připojím se a vše ti zkontroluji. Hned poté bych ti sem na blog napsal, co bylo špatně (zašlu i na mail).
Chyba byla ve špatném zápisu adresy k souboru .htpasswd (v řádku AuthUserFile). Správný zápis byl:
AuthUserFile /3w/wz.cz/j/***-***/pasw/.htpasswd.Já věděl, že někdo udělá chybu :). Proto jsem napsal návod, který je v článku.
Díky za návod podle kterého se dá pracovat. Jen mi něco nefunguje – jak jinak :-(. V IE a FF je to supr, ale v Chromu je něco špatně – dialog k heslu se zobrazí až poté co se zobrazí ta zaheslovaná stránka a po vystornovaní se na ní dá dál pracovat… Je to udělané podle tvého návodu, jen
Options -Indexesse mi nepovedlo zakomponovat – chyba 500.Díky za odpověď.
Generátor mi moc nefungoval, taxem našel lepší variantu fungující bez problémů – http://www.htaccesstools.com/htpasswd-generator/ :)
Options -Indexesnení až tak důležitý. Na funkčnost to nemá vliv. Podle mého máš chybu v adrese v řádkuAuthUserFile. Je zvláštní, že v některých prohlížečích ti zaheslování té stránky funguje a někde ne. Nejde mi to do hlavy. Zkus se ozvat přes kontaktní formulář a nějak to vyřešíme :).Díky, zdá se, že už je všechno OK.
Jak se dá heslo vygenerovat jinak? Když využiju stránku http://generator-hesel.station.cz/, tak to je v pohodě. Co když ale za pár dní (týdnů, …) přestane fungovat? Můžu si ten generátor hesel dát někam k sobě?
Určitě. Můžeš si jej klidně nakopírovat k sobě. Pokud to tedy hosting podporuje. Věnuji se tomu v jednom článku. Můžeš si to vyzkoušet, zkouknout a stáhnout. Problém je, že na většině serverů ti to nepůjde a tak budeš muset spíše hledat :).
Ahoj Tomáši, chtěl bych ti moc poděkovat za tento návod, dělám stránky ve formátu Flash a marně si lámu hlavu už pár měsíců jak vytvořit zaheslování stránek v programu ve kterým dělám a vzhledem k tomu, že jsem samouk, tak fakt nevím. Tenhle návod mi to hodně ulehčil. Takže díky!
Mám však otázku. Používám Mozillu a jakmile se jednou zaloguju pod jedním heslem a jménem, tak stránky po mě již heslo nevyžadují a automaticky se přihlásí (v Exploreru to funguje bez problému). Nevíš kde by mohla být chybička nebo jak to vyřešit, aby to vždy vyžadovalo heslo. Díky moc za odpověď.
Olda
Rádo se stalo. Těší mne to :). Odpověď hledej v článku (pro odhlášení a nové vyžádání hesla stačí zavřít prohlížeč).
Ahoj, vše jsem udělal podle návodu ale … logovací okýnko se zobrazí, ale když napíšu jméno a heslo neuzná mi to. Mohl by ses podívat?
Ahoj, všechno jsem udělal podle návodu, jakmile naraju do adresáře soubor .htaccess, stránka se zablokuje, ale neukáže se žádné logovací okénko. Nevíte někdo proč?
Díky
Možná tvůj server nepodporuje
.htaccess…Čau lidi. Já jsem amatér a proto se chci zeptat jak mám ty dvě složky, co jsem zde stáhl otevřít, když na to poklikam, tak se to neotevře. Děkuji za rady předem =).
Otevři je normálně v textovém editoru (Poznámkový blok, PSPad).
No to jsem hledal :).
Zkoušel jsem to přes login pomocí php scriptu, ale to se dá k daným souborům dostat ručně, když znám cestu k souborům. Tohle je perfekt.
Ale dotaz, dá se to nějak použít pro jednotlivé soubory v adresáři? Aby ke každému souboru bylo jiné heslo? Asi ne co.
Napadá mě jen jedno. Každý soubor do jiného adresáře a v každém adresáři „speciální“ .htaccess s odkazem na „speciální“ .htpasswd. Pokud zadám správnou cestu, pak je umístění .htpasswd libovolné, ne?
Ale stejně, nešlo by to jednodušeji? Např do jednoho .htaccess souboru zadám jednotlivé soubory a u nich nějaký kód, který bude odpovídat jednotlivým kódům v .htpasswd s jinými přihl. údaji. Tohle asi ne, co? :)
Ale stejně dík za tohle, určitě to využiju.
Ano, přes PHP něco zaheslovávat je ztráta času. Pro jednotlivé soubory to použít nejde, alespoň co vím. Funguje to totiž tak, že to znepřístupní celý adresář. Používá se to například u statistik webů a podobně. Rozdělil bych vše do různých adresářů. Pokud to nějak nevadí, soubory mají stejně něco kolem 0.1 kB.
Pokud zadáte správnou cestu může být soubor .htpasswd kdekoliv (alespoň myslím – nezkoušel jsem to). O lehčím zaheslování nevím. Tohle je opravdu všechno, co o zaheslování přes htaccess vím :).
Čus nevím proč ale háže mi to tam pětistovku (chyba 500) mám vše dobře a hosting mam IC.CZ
Srandovní. Pokud by jsi měl vše správně, fungovalo by to. Zkontroluj si ještě jednou správnost adresy k souboru .htpasswd. Je to řádek AuthUserFile v phpinfo (věnuji tomu celý odstavec).
Ahoj, udělal jsem vše podle návodu. Když, ale spustím soubor phpinfo.php nic se nestane pouze bílá stránka. Kde je chyba? Jak jinak můžu zjistit adresu pro řádek AuthUserFile. Dík
Zkus kontaktovat podporu hostingu. Je možné, že nepodporuje PHP (i když tomu nevěřím) nebo jede na jiné verzi. Pokud poprosíš technickou podporu o adresu k zaheslování (řádek AuthUserFile) – určitě ti pomohou :).
Ahoj, chtěl bych poděkovat za skvělý návod k zaheslování stránek. Já mám taky jeden problém. Zkoušel jsem to na svých stránkách, ale nemůžu se dostat přes logovací okýnko. Heslo v souboru .htpasswd jsem zkoušel generovat přes doporučovaný generátor. Tuším, že chyba bude opět v řádku AuthUserFile, ale ať to zkouším obměňovat jak chci, pořád mi to nejede. Z návodu jsem jasně nepochopil, jak má ta cesta vypadat. Můžeš mi, prosím, poradit? V phpinfo jsem našel řádek SCRIPT_FILENAME a zkopíroval tu cestu. Končí to /web/.phpinfo .php. Mám za to ještě připojit /.htpasswd? Když to udělám, nefunguje mi to. Díky za odpověď.
Děkuji za pochvalu. Samozřejmě adresa musí končit souborem .htpasswd. To znamená pokud je tvoje adresa …/web/phpinfo.php a opravdu chceš zaheslovat adresář web, stačí adresu změnit takto: /web/.htpasswd (pokud je v tomto adresáři soubor umístěn).
Zdárek,
je to skvělé, bezvadnej nápad. Jen dotaz: je možné použít zaheslování bez použití jména (zadávat pouze heslo) nebo jméno dopsat do „.htaccess“, aby bylo jméno defaultně nadepsáno a stačilo zadat pouze heslo.
To opravdu nevím, promiň. Tohle by šlo u zaheslování přes PHP, ale to je dost na prd. Zkus se na tuhle otázku zeptat na nějakém fóru :).