Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

239
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!