[python] parsing souboru
Jan Janech
devel na atlas.sk
Středa Květen 5 15:12:56 CEST 2010
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 na py.cz
> http://www.py.cz/mailman/listinfo/python
>
>
>
--
____________________________
Ing. Jan Janech
Katedra softverovych technologii
Fakulta riadenia a informatiky
Zilinska Univerzita
Další informace o konferenci Python