Autor | Zpráva | ||
---|---|---|---|
DomXXX Profil * |
#1 · Zasláno: 14. 10. 2012, 01:02:33 · Upravil/a: Moderátor (editace znemožněna) 14. 10. 2012, 12:15:57
Ahojte,
mám takovouto strukturu aplikace: ./www_root |--->css |--->css.css |--->img |--->logo.png |--->*.png |--->scripts |--->.htacces |--->index.php |--->admin_index.php |--->user_index.php Jak můžu zakázat přístup do css, img, scripts adresářů + jejich obsahu a zakázat přímé spuštění admin_index.php, user_index.php? Momentálně můj .htacces vypadá takto: SetEnv APP_ENV PRODUCTION # Turn on URL rewriting RewriteEngine On # Installation directory RewriteBase / # Protect hidden files from being viewed <Files .*> Order Deny,Allow Deny From All </Files> # Add trailing slash RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !.+/$ RewriteRule ^(.+)$ $1/ [R=301,L] # Allow any files or directories that exist to be displayed directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Rewrite all other URLs to index.php/URL RewriteRule .* index.php/$0 [PT] Mimochodem, netuším k čemu je zde <Files .*> Order Deny,Allow Deny From All </Files> Díky předem. |
||
Tori Profil |
#2 · Zasláno: 14. 10. 2012, 08:37:34
DomXXX:
<Files .*> Order Deny,Allow Deny From All </Files> „Jak můžu zakázat přístup do css, img, scripts adresářů“ Do každého dáte soubor .htaccess s obsahem Order Deny,Allow Deny From All <Files> , protože chcete zakázat všechny soubory v adresáři.
„JAk můžu zakázat přímé spuštění admin_index.php, user_index.php“ Tohle bych asi udělala v PHP. Na začátku těch skriptů bych testovala, jestli existuje nějaká konstanta, kterou definujete v index.php, a pokud neexistuje (= nejsou includované do index.php) tak přesměrovat na index.php. |
||
DomXXX Profil * |
#3 · Zasláno: 14. 10. 2012, 21:58:53
Díky :-)
nenapadlo mě, že .* znamená blokaci souborů začínajících tečkou, myslel jsem si, že to jsou všechny soubory, ovšem nechápal jsem, jak je možný, že to nefunguje ;-) Takže udělat to centrálně v .htaccess kterej je v ./www_root toto nelze? Pokud ne, není lepší přidat do adresářů index.php a patřičným kódem? Nebo nastavení .htaccess dědí i posložky? Myslím si, že ne... To přímé spuštění jsem nakonec vyřešil trošku jinak, a to tak, že jsem admin a user index sloučil do jednoho indexu... byly v podstatě identické, nevím proč mě to nenapadlo dřív... taková prkotina ;-) |
||
Tori Profil |
#4 · Zasláno: 14. 10. 2012, 22:26:29
DomXXX:
„Jak můžu zakázat přístup do css, img, scripts adresářů + jejich obsahu“ Jak jste to přesně myslel? Aby se 1) při zadání adresa-webu/css/ nezobrazoval seznam souborů v adresáři, anebo
2) aby skutečně ke všem stylopisům, skriptům a obrázkům měly přístup pouze PHP skripty? To co jsem radila (s Deny from All ) řeší druhou možnost. První případ by se napsal tak, že do www_root/.htaccess doplníte řádek Options -Indexes , nastavení se dědí v podadresářích.
Nastavení ve <Files> se rovněž aplikuje na všechny podadresáře (koukněte na ten odkázaný manuál). Trochu to plete - u RewriteRule zadáváte tečku v kontextu reguláru (tedy "jakýkoli znak"), ale u <Files> podobně jako v příkazové řádce (tedy "tečka"). Podle řádků 16-17 a 22-23 by se měly normálně zobrazit existující soubory (např. /img/logo.png). Nevím co to udělá, kdyby v adresáři img byl .htaccess se zablokováním přístupu. Vyzkoušejte. :) |
||
DomXXX Profil * |
#5 · Zasláno: 17. 10. 2012, 00:35:32
Myslel jsem právě možnost 2)
kód <Files .*> Order Deny,Allow Deny From All </Files> jsem již pochopil, neuvědomil jsem si (respektive nevěděl, i když to bylo u komentáře), že .* jsou na Linuxu skryté soubory... (v případě .htaccess na Win. je vrácen error 403. Problém s Deny from All je ten, že mi zakazuje přístup i samotným PHP skriptům, pokud nedělám něco blbě...
|
||
Tori Profil |
#6 · Zasláno: 17. 10. 2012, 18:50:02
DomXXX:
„Problém s Deny from All je ten, že mi zakazuje přístup i samotným PHP skriptům“ To je divné, nemělo by to tak být, tenhle způsob se běžně používá. Nepřistupujete k těm [nedostupným] skriptům přes URL místo cestu ve filesystému? |
||
Joker Profil |
#7 · Zasláno: 17. 10. 2012, 20:02:44
DomXXX:
„Problém s Deny from All je ten, že mi zakazuje přístup i samotným PHP skriptům“ PHP skript ty soubory načíst může (třeba přes fopen). Akorát já se vsadím, že ve skutečnosti ty soubory neotevíráte v PHP, ale dáváte odkazy na ně do stránky (přes <link> a <img> třeba). No a protože zobrazení třeba obrázku na stránce vyžaduje nejdřív přístup k souboru s obrázkem a jeho stažení do počítače návštěvníka, logicky to nefunguje. |
||
Davex Profil |
#8 · Zasláno: 17. 10. 2012, 20:12:42
DomXXX:
„Problém s Deny from All je ten, že mi zakazuje přístup i samotným PHP skriptům“
Chtěl jsi zakázat přístup ke všem souborům v adresářích, takže musíš dát soubory .htaccess se zákazem jen do adresářů a ne do kořene. |
||
Časová prodleva: 12 let
|
0