Tiene que ver con el modelo de objetos de Python: siempre hay una manera de obtener una referencia a los objetos que podrían ser inseguros. Consulte la documentación del módulo rexec y el capítulo de ejecución restringida de los documentos para obtener información sobre los problemas, así como:
Las limitaciones no tienen nada que ver con PostgreSQL en sí mismo, son inherentes a la implementación del intérprete CPython o posiblemente incluso al lenguaje Python.
Algunos otros idiomas han verificado tiempos de ejecución, como Perl, Java, JavaScript y Lua. La mayoría de ellos se han enfrentado a una serie de problemas de seguridad, ya que estos entornos de ejecución confinados son muy difíciles de proteger contra todos los posibles ataques de jailbreak.
Realmente no hay nada que impida que PostgreSQL agregue un intérprete de Python semitrusted, ya que rexec es "lo suficientemente bueno" para muchos propósitos. Sin embargo, PostgreSQL no tiende a interesarse en solo, en su mayoría, un poco lo suficientemente bueno. Probablemente solo se acepte si se marca solo como superusuario, pero siempre se puede otorgar acceso para usuarios específicos. Sería mejor que Python no confiable.
Personalmente, creo que PL / V8 o similar es el futuro aquí, y me gustaría ver que se mueva hacia ser compatible con el núcleo.
También he explorado vagamente la idea de un Mono confiable que pueda cargar ensamblajes "seguros" escritos en C #, VB.NET, IronPython o lo que sea, pero no he podido hacer mucho sobre ese tema.
rexec
módulo Python como inherentemente inseguro, como se vincula anteriormente. Me imagino que tal vez un plpython que usa PyPi podría entregar un modo restringido que Pg podría usar. No he buscado ver si hay mucho trabajo. También es incorrecto acerca de una "versión especial confiable de Perl": de hecho, es Perl perfectamente normal, el mismo intérprete se usa para plperl y plperlu. La diferencia es la configuración del tiempo de ejecución.pp_require_safe
yplperl_trusted_init
. No sé lo suficiente como para tener una gran opinión sobre la verdadera seguridad de la ejecución restringida de Perl. Preferiría ver una versión confiable de Lua u obtener una mejor distribución mental y adopción, un intérprete de JavaScript confiable. Pero lo que tenemos es plperl por ahora.