Posible: tal vez. Factible: parece poco probable. Simplemente restringir las importaciones no asegurará el sistema. Deberá analizar el script y buscar cosas como exec ()
El mayor obstáculo es que es muy difícil saber que has logrado bloquear todas las operaciones peligrosas.
Si no puedes confiar en los scripts, creo que la forma más segura de hacerlo es utilizar un lenguaje creado específicamente para lo que quieres hacer o construir el tuyo. Tratar de restringir el uso de un lenguaje de propósito general a lo que se conoce como seguro parece una tarea de Sisyphean. Lo que realmente quieres es un lenguaje de expresión matemática, ¿verdad?
Aquí hay un código para darle una idea de a qué se enfrenta:
e = eval
g = e("glo" + "bals")
f = chr(101)
f += chr(120)
f += chr(101)
f += chr(99)
f += chr(102)
f += chr(105)
f += chr(108)
f += chr(101)
b = getattr(g()["__" + "builtins" + "__"], f)
print b
b("badstuff.py")
Si no puede molestarse en ejecutarlo, la impresión b muestra:
<built-in function execfile>
Esto es justo lo que se me ocurrió en unos minutos. Claramente, debe restringir el uso de globales, eval, exec, execfile, pero no afirmo que esta lista sea exhaustiva.