Autor Zpráva
Networker
Profil
Ahoj,
chtěl bych se zeptat... Mám index.php a pak složku scripts... V ní mám php scripty, které jsou icnlude v index.php ... Jde mi o to, aby scripty fungovali, ale aby uživatel se nemohl dostat do té složky... Jde o to udělat?
Díky za odpovědi a návrhy, jak na to :-)
Marschmallow
Profil
Networker:
Pomocí .htaccess. Soubor .htaccess vložíš do složky se scripty. Následujícím zápisem zakážeš všem přístup (kromě interních adres):
deny from all
Networker
Profil
Když to udělám, tak mi to co je uvnitř složky nefunguje...
Joker
Profil
Co znamená „nefunguje“?
Networker
Profil
Když mám index.php a v tom include script.php ze složky scripts...

Ve složce scripts je .htaccess kde je jen deny from all

Tak když najedu na index.php, tak mi ze složky scripty neběží.

To samý, když to dám do složky images a style. Obrázky se nezobrazí a styl stránky taky ne...
Joker
Profil
Networker:
Na PHP skripty vkládané přes include/require a soubory otevírané přes souborový systém by to mělo fungovat*.

Pro JavaScripty, obrázky, kaskádové styly a vůbec všechno, co se musí návštěvníkovi stáhnout, aby to fungovalo, to pochopitelně fungovat nebude.
Když návštěvníkovi zakážete přístup k souboru, pochopitelně se mu nezobrazí.
Když chcete, aby se návštěvníkovi soubor zobrazil, nemůžete mu k němu zakázat přístup.

* Za předpokladu, že server podporuje řízení přístupu přes .htaccess
Networker
Profil
Tak bude chyba někde na serveru...

Dobře, když chci udělat aby do složky s obrázkama neměl uživatel přístup, ale soubory se zobrazovali?

v index.php se soubory ze složky img zobrazí, ale když dá uživatel cestu web.cz/img/ tak aby se tam nemohl dostat...
Marschmallow
Profil
Networker:
Jak už ti psal v [#6] Joker, pro styly, obrázky, javascripty to nelze udělat - musí se stáhnout. U PHP je to něco jiného, uživatel pošle požadavek na server, PHP ho zpracuje a uživateli vytvoří nový (zpracuje) čistý HTML dokument.


juriad
Profil
Networker, Marschmallow:
Je to možné. Místo na obrázek buedš odkazovat na skript:
web.cz/soubor.php?obrazek=tucnak.png

A tento skript zjistí, zda obrázek existuje, vypíše příslušne hlavičky a na konci zavolá readfile.
Samozřejmě, že tuto adresu bude moci použít kdokoli i mimo HTML stránku, ale můžeš treba vyžadovat session - kdykoli se stránka načte, vygeneruješ dočasný kód, který přilepíš k adrese obrázku web.cz/soubor.php?obrazek=tucnak.png&kod=1234 a bez tohoto kódu se obrázek odmítne zobrazit.
Pozor však na to, že takový obrázek se nebude cachovat, a tedy se bude stahovat vždy znovu (kdykoli session vyprší). Navíc to nemusí fungovat s různými proxy servery.

Obecně tato technika nemá smysl, pokud má nemá soubor být přístupný jen přihlášeným uživatelům. Na veřejném webu nevýhody dost převládají. Je-li něco veřejného, neochráníš to. Jediná spolehlivá ochrana je nezveřejňovat to.
Networker
Profil
Dobře,
děkuji za radu
Joker
Profil
Networker:
Dobře, když chci udělat aby do složky s obrázkama neměl uživatel přístup, ale soubory se zobrazovali?

Ten požadavek nedává smysl, „zakázat přístup“ znamená právě to, že se obrázek uživateli nezobrazí. Kdyby se mu zobrazil, nemá zakázaný přístup.

Samozřejmě zakázat přístup do složky lze, viz [#9] juriad.
Ale spíš než zákaz přístupu k souborům jde o skrytí skutečného umístění souborů.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: