Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

245
Vistas
¿Cómo puedo aceptar y ejecutar el código del usuario de forma segura en mi aplicación web?

Estoy trabajando en una aplicación web basada en django que toma el archivo python como entrada que contiene alguna función, luego en el backend tengo algunas listas que se pasan como parámetros a través de la función del usuario, lo que generará una salida de valor único. El resultado generado será utilizado para algunos cálculos adicionales.

Así es como se ve la función dentro del archivo del usuario:

 def somefunctionname(list): ''' some computation performed on list''' return float value

Actualmente, el enfoque que estoy usando es tomar el archivo del usuario como entrada de archivo normal. Luego, en mi views.py estoy ejecutando el archivo como módulo y pasando los parámetros con la función eval. Fragmento se da a continuación.

Aquí modulename es el nombre del archivo python que tomé del usuario e importé como módulo

 exec("import "+modulename) result = eval(f"{modulename}.{somefunctionname}(arguments)")

Que está funcionando absolutamente bien. Pero sé que este no es el enfoque seguro.

Mi pregunta, ¿hay alguna otra forma de ejecutar el archivo de los usuarios de forma segura ya que el método que estoy usando no es seguro? Sé que las soluciones propuestas no pueden ser una prueba completa, pero ¿cuáles son las otras formas en que puedo ejecutar esto (por ejemplo, si se puede resolver con dockerización, entonces cuál será el enfoque o algunas herramientas externas que puedo usar con API)? O, si es posible, ¿alguien puede decirme cómo puedo simplemente aislar esto o cualquier tutorial que pueda ayudarme?

Cualquier referencia o recurso será útil.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Seguro que con la ventana acoplable puede aislar la ejecución si tiene cuidado. Puede restringir los ciclos de CPU, maximizar la memoria, cerrar todos los puertos de red, ejecutar como usuario con acceso de solo lectura al sistema de archivos y todo).

Aún así, esto sería extremadamente complejo para hacerlo bien, creo. Para mí, no permitirá que un cliente ejecute un código arbitrar como ese.

Sería verificar si una producción/solución aún no está hecha y usar eso. Estaba pensando que algunos sitios te permiten enviar algún código (python, java, lo que sea) que se ejecuta en el servidor.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda