Zaheslování adresáře na serveru Apache pomocí .htaccess
Pokud z nějakého důvodu potřebujete zamezit přístup do adresáře a jeho podřízených podadresářů na linuxovém serveru Apache, pak rychlým a jednoduchým způsobem – v případě, že nechcete napojit autentizaci na nějakou SQL databázi – je využít příkazů, které se zapíší do souborů uploadovaných na server. Není to pochopitelně řešení komfortní a snadno upravitelné, využijete to jen v určitých případech.
Alespoň trochu pokročilejší uživatel/programátor toto jistě zná, tento návod uveřejňuji proto, neboť jsem něco podobného kdysi potřeboval a v manuálu či na Internetu našel návody buď složité, nebo neúplné.
Princip
Soubory, které je potřeba uploadovat na server, jsou dva. V prvním souboru (.htaccess) řeknete serveru, že pro daný adresář (v kterém se bude tento soubor nacházet) a jeho podadresáře požadujete autorizaci. Druhý soubor (.htpasswd) pak bude obsahovat login a heslo, ovšem heslo bude zakódované. Tento soubor by také měl být v adresářové struktuře umístěn tak, aby se k němu nikdo nezúčastněný nedostal.
Soubor .htaccess
Vytvořte soubor s názvem .htaccess (ano, ten soubor jakoby neměl název, ale měl pouze příponu) a do něj vpište následující kód:
AuthName „zaheslovanyAdresar"
AuthType Basic
AuthUserFile ***ADRESANASOUBORSHESLEM***
require valid-user
Namísto textu ***ADRESANASOUBORSHESLEM*** vepište cestu na soubor s přihlašovacími údaji – tedy ten druhý soubor. Třeba:
domena.cz/.htpasswd
Pozor! Adresa musí být uvedena ve tvaru absolutní cesty k souboru. Pokud ji neznáte, nebo přesně nechápete, jak ji zjistit, zkuste napsat nějaký soubor s chybovým scriptem a chybová hláška vám tuto adresu odhalí. Příklad chybného scriptu:
<?php
echo "bla bla //chybí uvozovky na konci textového řetězce
Soubor s heslem .htpasswd
Vytvořte soubor .htpasswd a uložte do něj jméno a hesla povolaných osob. Jména a hesla jsou zakódována. Formulář pro zakódování najdete třeba zde: Generátor hesel pro .htpasswd.
Vytvořený řádek(řádky) s přístupovými údaji vložte do souboru .htpasswd. Údajů může být nekonečně mnoho, oddělují se enterem, takže soubor může vypadat např. takto:
user1:$apr1$1EIzR/..$K57u3Wc25TaeZIQWkyaNZ0
user2:$apr1$575/S/..$VyWjCrejvDiWaIdKnBiE01
Malý dodatek
Adresář, kde máte uloženy nějaké soubory, ke kterým by se žádný uživatel neměl dostat (jde např. o includované vlastní funkce) a přistupuje k nim pouze server, je dobré a především velmi jednoduché, zamezit přístup také pomocí .htacces. Stačí vytvořit soubor .htaccess, uploadovat ho do tohoto adresáře a nikdo „z venku" se do něj nedostane. Server sám, resp. vaše scripty, pochopitelně ano.
deny from all
Pochopitelně můžete tento přístup vyřešit i reWritem. Možností je spousta.
Martin Ševčík,
12. 8. 2006
přečteno: 7711/7525×
Vložit komentář