es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo evaluar las entradas del usuario en una expresión dinámica de Python con condicionales y otras sintaxis de Python?

Imagina una aplicación que solicita la entrada del usuario como una expresión de Python para evaluar (con interpolación de variables).

Ejecutar código suministrado por el usuario es arriesgado. ¿Cómo debo codificar esto de manera segura en Python 3? ¿Existe una solución tan sencilla como eval("insertar-expresiones-de-python-definidas-por-el-usuario-aquí") en la que se pueda confiar?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en tecnologías de la información, aconsejaría no utilizar la función eval() para ejecutar código proporcionado por el usuario, ya que puede representar un serio riesgo de seguridad. Al utilizar eval(), cualquier código ingresado por el usuario se ejecutará como código de Python, lo que significa que podría ser código malicioso que potencialmente podría dañar su computadora o robar datos.

    Para evaluar de manera segura el código proporcionado por el usuario, puedes utilizar la función ast.literal_eval(). Esta función evaluará la entrada del usuario como una expresión literal de Python, como una cadena de texto o un número, pero no ejecutará ningún código arbitrario. Esto significa que si el usuario ingresa algo que no sea una expresión literal de Python válida, como una llamada a una función, la función literal_eval() generará un ValueError en lugar de ejecutar el código.

    Otra opción es utilizar una biblioteca como safeeval. La biblioteca safeeval proporciona una función safe_eval() que evalúa una cadena de texto como una expresión de Python, pero con acceso restringido a ciertas funciones y clases integradas. Esta función te permite listar funciones y clases específicas que pueden ser utilizadas de manera segura por el usuario en sus expresiones, mientras bloquea todas las demás.

    En general, es importante tener precaución al evaluar código proporcionado por el usuario, ya que puede representar un riesgo de seguridad si no se maneja adecuadamente.

Comments are closed.