Pozor! RestrictedPython umoznuje iba plne kontrolovat, ku ktorym
objektom ma vykonavany kod pristup a ku ktorym nie. Okrem toho, ze je s
nim vykonanie pomalsie, neumozni osetrit situacie, ktore som nacrtol v
mojom druhom maily. Ak by ten druhy mail neprisiel, tak su to napr. tieto:
rekurzia
>>> superNebezpecnyKod='(lambda x=(lambda y: y(y)): x(x))()'
nekonecny cyklus:
>>> superNebezpecnyKod='(lambda x=[1]: [x.append(1) for i in x])()'
zrut pamate a cpu:
>>> superNebezpecnyKod='2**10000000000000000'
a kopec inych.
okrem toho, len poopravenie: RestrictedPython kod nekompiluje, iba
patchuje existujuci bytekod. Kompilaciu zdrojaku nechava na Python.
Jan Janech
On 05/05/10 15:02, Jakub Zíka wrote:
V Pythonu dříve existoval modul rexec a Bastion, které měly zajistit,
aby bylo možné bezpečně spouštět nedůvěryhodný kód. S uvedením novější
verze Pythonu (mám pocit, že 2.3) se ale našly nějaké bezpečnostní
díry a tyto moduly byly defaultně zakázány. Teď jsem ale narazil na
modul ResctrictedPython
(http://pypi.python.org/pypi/RestrictedPython), který se tváří jako že
žádné bezpečnostní díry nemá. Nejdůležitější vlastností je to, že si
poskytnutý kód sám zkompiluje a například nedovolí jakékoliv používání
objektů, jejichž název začíná podtržítkem. Jaký je váš názor? Máte
nějaké zkušenosti? Na netu jsem nikde nenašel žádnou studii, jestli to
funguje nebo ne.
_______________________________________________
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python
--
____________________________
Ing. Jan Janech
Katedra softverovych technologii
Fakulta riadenia a informatiky
Zilinska Univerzita
_______________________________________________
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python