Zaheslování stránky pomocí .htpasswd, zná někdo návod?

Freemaily, internetové služby a jiná témata

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod stani 20. 10. 2020 20:08

Zdravím,

kdysi jsem to uměl, ale už jsem to úplně zapomněl.

Potřeboval bych na webu zaheslovat 2 stránky (každou pod jiným heslem). Dělá se to myslím tak, že se nezahesluje přímo stránka, ale složka ve které daná stránka je, nebo tak nějak, už si to fakt nepamatuji. :-D

Potřeboval bych nějaký jednoduchý návod (postup krok po kroku), jak to udělat. Přihlašovací jméno nepotřebuji, pouze přihlašovací heslo.

Předem díky :-)
stani
Junior
Uživatelský avatar


Odeslat příspěvekod Emil Pastelka 20. 10. 2020 20:53

Jak píšete, hesluje se adresář a jeho nižší úrovně. Hosting musí podporovat vlastní úpravu souboru htaccess.
Do požadovaného adresáře vložíte dva soubory .htaccess a .htpasswd

obsah htaccess
Kód: Vybrat vše
AuthType basic
AuthName "Restricted Access"
AuthUserFile /cela/cesta/hostingu/ke/konkretni/slozce/asouboru/.htpasswd 
Require valid-user


obsah htpasswd jsou pak přihlašovací údaje ve formátu
jmeno:heslo - kdy heslo je alespoň základ zašifrováno.
Co řádek, to jeden uživatel.
Kód: Vybrat vše
Pavel:$apr1$zimcagvq$FjrmAfTpMXwgt8GFv1JNd0

V příkladu je přihlášení pro uživatele jménem Pavel s heslem Heslo123
$apr1 značí, že je použito šifrování MD5

Na adrese hostingcanada.org/htpasswd-generator Můžete vytvořit přihlášení pro jednotlivé uživatele.
1. Username
2. Password
3. Mode (typ šifrování - měl by být stejný pro všechna hesla)
4. Create
5. zkopírujete vytvořený řetězec
6. opakujte dle potřeby

Pokud nejde o kritické informace, klidně použijte základní šifru SHA1.


Další možností je heslovat přímo konkrétní stránku - pokud používáte PHP.
Opět se jedná o velmi jednoduchou ochranu.
Kód: Vybrat vše
<?php
//napište jakékoliv heslo
$password = "heslo123";

if (isset($_POST["password"]) && ($_POST["password"]=="$password")) { ?>

<!-- HTML pro přihlášené uživatele -->

   <h2 style="color: green;">Zde je tajný obsah</h2>
   <p>Vítejte!</p>

<!-- konec obsahu pro přihlášené uživatele -->

<?php }

//Toto je zobrazeno, pokud je heslo nesprávné
else{
  if($_SERVER['REQUEST_METHOD'] == 'POST') { ?>

    <h2 style="color: red;">Špatné heslo</h2>

<?php } ?>
   <h2>Vložte správné heslo</h2>
   <form id ="myForm" method="post">
      <input name="password" type="password" size="25" maxlength="10">
      <input type="submit" value="Odeslat">
   </form>
<?php } ?>


Ještě doplním, nejsnazší způsob zjištění absolutní cesty pro htaccess je vytvořením PHP souboru v dané složce - například zjisti.php a jeho spuštěním zadáním celé adresy www.mojedomena.cz/mujadresar/zjisti.php případně dle nastavení hostingu i subdoménou projekt.mojedomena.cz/zjisti.php
obsah souboru PHP bude jen
Kód: Vybrat vše
<?php
   $path = getcwd();
   echo "Absolutní cesta je:<br> ";
   echo $path;
?>
Emil Pastelka
Junior
Uživatelský avatar

Odeslat příspěvekod stani 21. 10. 2020 05:33

Emil Pastelka: OK, děkuji. Až nyní jsem měl více času na pročtení. Díky za ten návod (.htaccess a .htpasswd), ale šlo by to prosím bez username? Potřebuji se na tu danou stránku přihlašovat toliko heslem.

Znám dobře generátor pro SHA1, šel by v tomto případě použít namísto MD5?

díky :-)
stani
Junior
Uživatelský avatar

Odeslat příspěvekod Emil Pastelka 21. 10. 2020 17:35

Jako generátor použijte raději ten postup, který jsem odkazoval. Nejde o samotné kódování, ale o tvar zápisu pro htpasswd - tedy včetně uvedení typu kódování - například {SHA}.
Kód: Vybrat vše
jméno:{SHA}n8/4QdDz6FpVDQSnEvEZPfrMs38=


Jinak pro zabezpečení přes protokol http, respektive htpasswd, je vždy potřeba jméno a heslo. Tento požadavek vzniká sice na straně serveru, ale formulář generuje prohlížeč klienta. Vždy ve tvaru jméno a heslo.
Jediná možnost je nevyplnit uživatelské jméno před dvojtečkou. V takovém případě sice opět vyskočí požadavek na jméno a heslo, ale jméno může zůstat nevyplněno.
Kód: Vybrat vše
:{SHA}n8/4QdDz6FpVDQSnEvEZPfrMs38=


Nevyhovuje-li Vám ani to podívejte se na ten druhý příklad s PHP.
Emil Pastelka
Junior
Uživatelský avatar

Odeslat příspěvekod stani 22. 10. 2020 16:12

Tak se nějak nedaří... 8-S

Přes FTP jsem nahrál složku, ve které je jak .htaccess tak i .htpasswd - myslím správně vyplněno, webová stránka v html. Při zadání adresáře nebo přímo té stránky v adresáři v prohlížeči, poprvé sice vyskočí box Požadováno ověření, s políčkem pro Jméno a Heslo, správně zadáno, ale pak se namísto dané stránky objeví 500 Internal Server Error...

Následně při použití F5, se už přihlašovací box neobjeví, pouze pořád ona stránka s 500 Internal Server Error...
stani
Junior
Uživatelský avatar

Odeslat příspěvekod Emil Pastelka 22. 10. 2020 17:01

Kde hostujete a jaký máte program?
Emil Pastelka
Junior
Uživatelský avatar

Odeslat příspěvekod stani 22. 10. 2020 18:23

Už to mám. Hlavní problém byl s absolutní cestou pro htaccess. Ale pak také s MD5. Když jsem použil SHA1, tak to už fungovalo.

Zítra sem dám ze získaných informací (ještě jednou díky), návod pro začátečníky a laiky, aby se v tom každý vyznal a fungovalo to na první dobrou. ;-)
stani
Junior
Uživatelský avatar

Odeslat příspěvekod stani 23. 10. 2020 12:10

Takže zde je jasný, podrobný a funkční návod pro zaheslování pomocí .htpasswd, krok po kroku.

Jen chci předeslat, že se nehesluje samotná stránka(y), nýbrž adresář (složka), ve které stránka(y) je(jsou).

Budeme potřebovat tři soubory: .htaccess, .htpasswd a zjisti.php. Předpřipravené jsou ke stažení zde (Pozn.: v souboru .htaccess je pak potřeba doplnit absolutní cestu, v souboru .htpasswd je přednastaveno uživatelské jméno: Admin a heslo: heslo123).




1) vytvoříme si složku (adresář) ve které má stránka(y) být. Do složky vložíme zjisti.php který má tento obsah:
Kód: Vybrat vše
<?php
   $path = getcwd();
   echo "Absolutni cesta je:<br> ";
   echo $path;
?>

Složku spolu se souborem zjisti.php nahrajeme přes FTP na server.




2) zadáme do prohlížeče URL adresu ve tvaru: doména/složka/zjisti.php. Následně se nám objeví stránka kde je tzv. Absolutní cesta. Tuto zkopírujeme z vložíme do souboru .htaccess, který bude mít tento obsah:
Kód: Vybrat vše
AuthType basic
AuthName "Zadejte heslo"
AuthUserFile /absolutní cesta/.htpasswd
Require valid-user




3) v online generátoru SHA zadáme uživatelské jméno (username) a heslo (pasword), Mode zvolíme SHA1, a necháme vygenerovat daný řetězec.
Tento řetězec zkopírujeme a vložíme do souboru .htpasswd takto (ukázka):
Kód: Vybrat vše
Admin:{SHA}hJso3L4sN7LGDZlOXb1LIVNdBwE=

Pozn.: jak předesláno, toto je zkušebně vygenerovaný řetězec pro Admin a heslo123. Je také možné nechat si vygenerovat více uživatelských jmen s heslem, tyto se pak dávají do souboru .htpasswd na řádky pod sebou.




4) vytvoříme si (nebo pokud už máme) danou webovou stránku. Můžeme jich mít ve složce (adresáři) i více. Pokud máme jen jednu, anebo nějakou hlavní, měla by mít název index (html, php). Je to z toho důvodu, že pak nemusíme zadávat do prohlížeče celou adresu vč. dané stránky, ale stačí zadat pouze danou složku (adresář). U ostatních stránek pak samozřejmě se musí do prohlížeče zadávat celá cesta, vč. dané stránky.




5) soubory .htaccess, .htpasswd a danou webovou stránku(y) opět přes FTP nahrajeme do dané složky.
Naposledy upravil stani dne 23. 10. 2020 16:33, celkově upraveno 9
stani
Junior
Uživatelský avatar

Odeslat příspěvekod Emil Pastelka 23. 10. 2020 12:25

Napsal jste to vyloženě neprůstřelně :) Jen dodám, používám tmavé téma a ten zabarvený text (tmavě červená až hnědá) je téměř nečitelný.
Emil Pastelka
Junior
Uživatelský avatar

Odeslat příspěvekod stani 23. 10. 2020 14:15

Teď už je to doufám OK. ;-)
stani
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků