Autor | Zpráva | ||
---|---|---|---|
jenkings Profil |
#1 · Zasláno: 6. 9. 2014, 13:43:19
Zdravím.
řeším jeden takový problém: Píšu CMS a potřeboval bych vyřešit jednu věc: Všechny modifikace budu mít dejme tomu ve složce mods/nazevmodifikace A potřebuji zařídit, aby tyto modifikace mohly includovat soubory a manipulovat pouze ze své vlastní složky, a jediný soubor ,který by mohl být načten mimo složku by byla třída s API, pro vykonávání těchto ostatních fcí, uložená přímo ve složce mods Je nějak možné toto zařídit ? tuším že by to mohlo jít třeba pomocí .htaccess ,ale s tím zatím neumím moc manipulovat |
||
Davex Profil |
jenkings:
Dá se použít konfigurační volba open_basedir .
Pro PHP běžící jako modul Apache by šlo nastavit zápisem v .htaccess za předpokladu, že je to povolené v konfiguraci Apache: php_value open_basedir /var/www/cela/cesta/k/omezenemu/adresari Pro PHP 5.3 a novější běžící jako CGI/FastCGI může být konfigurace v souboru .user.ini. Opět za předpokladu, že je tento způsob konfigurace povolen v globální konfiguraci PHP. open_basedir = /var/www/cela/cesta/k/omezenemu/adresari Konfigurační soubor bude v adresáři pro který platí, takže je ještě dobré nastavit mu vhodná přístupová práva, aby ho skripty nemohly upravovat. |
||
jenkings Profil |
#3 · Zasláno: 6. 9. 2014, 14:34:08
Davex:
Díky za radu jen teď ještě přemýšlím jak to vyřešit , aby byl přístup pouze k tomu API, které se nachází o jedu úroveň výše |
||
jenkings Profil |
#4 · Zasláno: 6. 9. 2014, 20:03:02
nakonec jsem to vyřešil trochu jinak. Díky za pomoc a můžete LOCK
|
||
Davex Profil |
#5 · Zasláno: 6. 9. 2014, 20:09:41
jenkings:
„nakonec jsem to vyřešil trochu jinak“ Bylo by dobré napsat jak. Někomu dalšímu by to mohlo pomoci. |
||
jenkings Profil |
#6 · Zasláno: 6. 9. 2014, 21:57:15
No, v zásadě v 95% procentech případů je stejně modifikace volána z jádra CMS.
Proto tedy kód nejdříve spustím třídou Preprocesor, kde si načtu kód modifikace do proměnné, proženu to skrze regularni výrazy, které eliminují nebezpečné funkce, includy,require atd... a následně tento kód spustím pomocí evalu a celkový výstup z modifikace mi potom Preprocesot vyhodí jako textový řetězec. Není to sice nejrychlejší řešení, ale mělo by to zajistit bezpečnost instalovaných modifikací, které při instalaci získají oprávnění , a podle toho můžou manipulovat skrze API |
||
Davex Profil |
#7 · Zasláno: 7. 9. 2014, 12:26:57
jenkings:
Pokud se chystáš na filtrování kódu, tak nezapomeň na takové drobnosti, že kód jde spustit třeba i v regulárním výrazu. Možná by na to bylo vhodnější použít sandbox. |
||
Časová prodleva: 10 let
|
0