2011-01-17 15 views
19

¿Existen formas conocidas de que la evaluación de ast.literal_eval(node_or_string) no sea segura en realidad?Python 3, ¿Hay agujeros de seguridad conocidos en ast.literal_eval (node_or_string)?

En caso afirmativo, ¿hay parches disponibles para ellos?

(que ya sé sobre PyPy [caja de arena], que presumiblemente es más seguro, pero menos que las respuestas son sí, entonces no, mis necesidades son bastante menores que no voy a ir tan lejos.)

+0

No, pero tengo CBA para demostrarlo. –

Respuesta

41

El documentation indica que es seguro, y no hay ningún error relativo a la seguridad de literal_eval en el bug tracker, por lo que probablemente pueda suponer que es seguro.

También, according to the source, literal_eval analiza la cadena a un AST python (árbol de origen), y solo devuelve si es un literal. El código nunca se ejecuta, solo se analiza, por lo que no hay ninguna razón para ser un riesgo de seguridad.

+4

+1 La razón por la que no hay más respuestas aquí es que no hay nada más que decir. –

+1

Bueno, siempre es difícil probar que no existe ningún riesgo, pero el hecho de que el código nunca se ejecute debería ayudar a convencer de que no hay mucho riesgo. – madjar

+2

El riesgo es casi el mismo que usar Python. –