Potesim Vas, z evalu ani z execu sa pokial mi je znamo utiect neda. Teda
ak to clovek vie spravit.
staci nieco taketo:
>>> eval(superNebezpecnyKod, {'__builtins__': {}}, {})
alebo
>>> exec superNebezpecnyKod in {'__builtins__': {}}, {}
zavisi ale od toho, akym situaciam sa chcete vyhnut.
coho sa nezbavite (ani evalom) je napr nekonecna rekurzia:
>>> superNebezpecnyKod='(lambda x=(lambda y: y(y)): x(x))()'
to az tak neboli, ak nemate povolenu nejaku prilis hlboku uroven rekurzie.
co tak ale nekonecny cyklus?
>>> superNebezpecnyKod='(lambda x=[1]: [x.append(1) for i in x])()'
alebo supernarocne operacie?
>>> superNebezpecnyKod='2**10000000000000000'
vela stastia pri vyuzivani evalu a execu :D
Jan Janech
On 05/05/10 14:26, Hynek Fabian wrote:
Jan Janech (středa 05 Květen 2010 13:08:49):
Dovolim si oponovat. Vsetko co sa da v pythone v exec spravit pre
narusenie bezpecnosti sa da spravit aj v eval.
Jak?
eval(x, {}, {})
Jakým X se dá z takové konstrukce utéci?
_______________________________________________
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