Kit má pravdu. Security by obscurity není dobrý postup. Neveřejné soubory musí zůstat neveřejné (i když jako lepší postup mi přijde nad nima vytvořit php proxy než řešit přihlašování přes http autentizaci).
Jak se to dela pres ty session aby mel do adresare pristup jen ten kdo zada heslo. Kdyz je adresar zamknut heslem pomoci htaccess a htpasswd, tak ho lze otevrit pres session? Nechapu o session jsme se tu uz bavili ale ty mi adresar nezpristupnily. Normalni adresar otevru pres url radek tak ho jedine muzu schovat nebo zamknout pomoci htaccess a htpasswd. S tim schovanym adresarem to umim staci presmerovat pomoci header v php. Ale zamceny adresar pomoci htaccess a htpasswd ten pomoci php a session nebo javascriptu zpristupnit konkretnimu uzivateli neumim...:-(
Proxy si můžeš napsat v PHP.
Ať jsme trochu konkrétnější, tak postup může vypadat například tak, že do původního dresáře zakážeš přístup úplně všem (deny from all). Soubory budeš zpřístupňovat (po kontrole přihlášeného uživatele) např. s pomocí funkce readfile (normálně poslané na výstup), proto označovaně jako proxy. Ve výsledku tak uživatel nebude mít žádnou informaci o tom, kde v adresářové struktuře se původní soubor vůbec nachází.
K tomu ale předesílám jedno varování. Pokud člověk přestane při psaní takové skriptu přemýšlet, velmi jednoduše v něm lze vytvořit bezpečnostní díru (např. kromě požadovaných souborů zpřístupníš i zdrojové kódy všech skriptů apod. ;).
Zabezpečení pomoci .htaccess platí pouze pro veřejnost. Proto se k těmto souborům nikdo z venčí nedostane. Ovšem pro server, a tedy i PHP, jsou tyto soubory nadále přístupné. Takže stačí vytvořit právě onen PHP proxy, který otevře onen soubor a pošle ho na výstup prohlížeče. Předtím než něco vyhodíš ven, tak můžeš zkontrolovat, zda je daný uživatel přihlášen. Pokud ne, tak mu dáš přihlašovací formulář, kterým se přihlásí. Přihlašováním se vytvoří session, kterým pak při stahování souboru přes proxy ověříš, že je uživatel přihlášen a má právo soubor stáhnout.
Takže v tomhle směru nezbývá nic jiného než prostudovat a dát dohromady dvě věci:
- přihlašování pomoci session
- download souboru pomoci PHP
To se mi také málem stalo, dá se na to zapomenout velmi snadno. Bezpečnější je všechna taková data mít v databázi. Útočník se pak může rozkrájet, ale z virtuálního adresáře se nedostane. Pro vyšší výkon je však potřebné zvládnout i reakci na HTTP požadavek HEAD.
Nectes. Pokud to chces zaheslovat, tak tam dej jedno univerzalni heslo. Toto heslo pak pouzije tvuj php kod pro pristup, kdyz si overi platnost uzivatele treba z mysql.
Pokud nekdo pouzije primou adresu, tak bude adresar zamcen univerzalnim heslem. Nezna, nedostane se tam.
Pokud ti nezalezi na tom, ze nekdo muze napsat presnou adresu a zobrazi se mu soubor, tak htaccess vubec nepotrebujes, ho smaz. (Viz fotky z facebooku, treba. Sdilenou fotku vidis jen po prihlaseni. Ale kdyz pouzijes primy odkaz, vidis ji i bez prihlaseni)
Opakuji: Nemaž .htaccess, jak ti radi peta1. Můžeš v něm smazat řádky, které se týkají HTTP autentizace.
peta1: Ale čte. Rozlišuje mezi .htaccess a .htpasswd ;)
A mimochodem, "pokud to chces zaheslovat, tak tam dej jedno univerzalni heslo. Toto heslo pak pouzije tvuj php kod pro pristup, kdyz si overi platnost uzivatele treba z mysql" je nesmysl. Proč by tam měl dávat jakékoliv heslo, sakra? Bohatě stačí "deny from all", filesystem nějaká http autentizace nezajímá (takže ji obejde).