[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