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: 7588/7402×

Bookmark and Share

Vložit komentář Vložit komentář