¿Hay alguna alternativa a rexec para el sandboxing de Python?
security (3)
en cpython "sandboxing" por razones de seguridad es un: " no hagas eso en los hijos de tu compañía ", nada .
tratar :
- jython con java "sandboxing"
- pypy -> ver Answer S.Lott
- tal vez ironpython tiene una solución?
ver Advertencia :
Advertencia
En Python 2.3 estos módulos se han desactivado debido a varios agujeros de seguridad conocidos y no fácilmente reparables. Los módulos están documentados aquí para ayudar a leer el código antiguo que usa los módulos Rexec y Bastion.
La implementación de un entorno ''sandbox'' en Python solía hacerse con el módulo rexec ( http://docs.python.org/library/rexec.html ). Desafortunadamente, se ha desaprobado o eliminado debido a algunas vulnerabilidades de seguridad. ¿Hay una alternativa?
Mi objetivo es que el código de Python ejecute scripts de Python que sean confiables. En un mundo perfecto, las llamadas a cualquier función fuera de un conjunto predefinido generarían excepciones. Por lo que he leído sobre la desaprobación de rexec, esto puede no ser posible. Así que me conformaré con todo lo que pueda. Puedo generar un proceso separado para ejecutar los scripts, lo que ayuda mucho. Pero aún podrían abusar de E / S o recursos de procesador / memoria.
Es posible que desee proporcionar su propio __import__
para evitar la inclusión de cualquier módulo que considere "abuso de E / S o recursos de procesador / memoria".
Es posible que desee comenzar con pypy y crear su propio intérprete con limitaciones y restricciones en el uso de recursos.
Su mejor apuesta para la seguridad en cPython es utilizar mecanismos de espacio aislado del sistema operativo y ejecutar el código que no es de confianza en un proceso separado restringido por el sistema operativo.
Esto es equivalente a usar ''jython with java'' sandboxing '''', según la respuesta anterior , pero probablemente sea un poco más difícil de configurar.