Autor Zpráva
jenkings
Profil
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
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
nakonec jsem to vyřešil trochu jinak. Díky za pomoc a můžete LOCK
Davex
Profil
jenkings:
nakonec jsem to vyřešil trochu jinak
Bylo by dobré napsat jak. Někomu dalšímu by to mohlo pomoci.
jenkings
Profil
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0