Restringido pesar

RestrictedPython proporciona un entorno de ejecución restringido para Python, por ejemplo. para ejecutar código no confiable.
Descargar ahora

Restringido pesar Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • ZPL
  • Precio:
  • FREE
  • Nombre del editor:
  • Zope Corporation and Contributors
  • Sitio web del editor:
  • http://zope org

Restringido pesar Etiquetas


Restringido pesar Descripción

RestrictedPython proporciona un entorno de ejecución restringido para Python, por ejemplo. para ejecutar código no confiable. RestrictedPython es una biblioteca de Python que proporciona una función de compilidad restringida que funciona como la función compilada incorporada, excepto que permite la ejecución de código controlada y restringida: >>> src = '' '... def hola_world (): .. . VOLVER "HELLO MUNDO!" ... '' '>>> de restricciónPintython Import Compile_Restrice >>> Code = Compile_restrice (SRC,' ',' EXEC ') El código resultante se puede ejecutar utilizando el EXEC integrado: >>> EXEC (código) como Un resultado, la función HELLO_WORLD ahora está disponible en el espacio de nombres global: >>> hello_world () 'Hello World!' Implementando un PolítrofypyThon solo proporciona la materia prima para la ejecución restringida. Para hacer cumplir realmente cualquier restricción, debe proporcionar una implementación de políticas al proporcionar versiones restringidas de impresión, Getattr, SetAtTRT, importación, etc. Estas implementaciones restringidas se conectan al proporcionar un conjunto de objetos especialmente nombrados en el DICT global que utiliza para Ejecución del código. Específicamente: 1. _print_ es un objeto que devuelve un controlador para declaraciones de impresión. Este controlador debe tener un método de escritura () que acepte un argumento de una sola cadena, y debe devolver una cadena cuando se llama. RestrictedPython.printCollector.printCollector es una implementación adecuada. 2. _WRITE_ es una función de guardia que toma un solo argumento. Si se puede escribir el objeto que se pasa a él, debe devolverse, de lo contrario, la función de guardia debe plantear una excepción. _WRITE se llama normalmente en un objeto antes de una operación SetAtTRT. 3. _ _getattr_ y _getitem_ son funciones de guardia, cada una de las cuales toma dos argumentos. El primero es acceder al objeto base, mientras que el segundo es el nombre del atributo o el índice de elementos que se leerán. La función GUARD debe devolver el atributo o subsitem, o aumentar una excepción. 4. __Import__ es el gancho de importación de Python normal, y debe usarse para controlar el acceso a los paquetes y módulos de Python. 5. __Builtins__ es el Diccionario Normal de Botones Python Forderins, que debe ser eliminado a un conjunto que no se puede usar para evitar sus restricciones. Un conjunto de "seguro" utilizable es restringidothon.guards.safe_builtins.ara ayudar a ilustrar cómo funciona esto bajo las cubiertas, aquí hay una función de ejemplo: DEF F (x): x.foo = x.foo + x Imprimir x retorno impreso y (Tipo de) cómo se ve después de la compilación restringida: DEF F (X): # Haz variables locales de globales. _print = _print_ () _write = _write_ _getattr = _getattr_ _getitem = _getitem_ traducción de f (x) arriba _write (x) .foo = _getattr (x, 'foo') + _getitem (x, 0) Imprimir >> _ imprimir, x Devolver _Print () EjemplosPrintPrint Para admitir la declaración de impresión en el código restringido, suministramos un objeto _print_ (tenga en cuenta que es una fábrica, por ejemplo, una clase o una llamada, desde la cual la maquinaria restringida creará el objeto): >>> de restringidopython.printcollector Importar imprimir >>> _print_ = PrintCollector >>> src = '' '... imprimir "Hola mundo!" ... '' '>>> Code = Compile_Restrice (SRC,' ',' EXEC ') >>> EXEC (código) Como puede ver, el texto no aparece en STDOUT. El colector de impresión lo recoge. Podemos tener acceso al texto utilizando la variable impresa, aunque: >>> src = '' '... imprimir "Hola mundo!" ... resultado = Impreso ... '' '>>> Code = Compile_Restrice (SRC,' ',' EXEC ') >>> EXEC (código) >>> Resultado' ¡Hola mundo! 'INSBY INSBYSE A DIFERENTE __BUILTINS__ Diccionario, podemos descartar operaciones inseguras, como abrir archivos: >>> de RestrictedPython.guards Importar Safe_Builtins >>> Restricted_globals = DICT (__ BURTINS__ = Safe_Builtins) >>> SRC =' '' ... Abrir ('/ etc / passwd') ... '' '>>> Code = Compile_Restrice (SRC,' ',' EXEC ') >>> EXEC (código) en Restricted_globals TraceBack (última llamada más reciente) : ... NamilError: Name 'Open' no es un ejemplo de un ejemplo de escritura de un protector de escritura que nunca le permite restringir el código modificar (asignar, eliminar un atributo o elemento), excepto los diccionarios y enumerados: >>> de restringidopython.guards >>> > _write_ = full_write_guard >>> _getattr_ = getattr >>> bikeeshed de clase (objeto): ... color = 'verde' ... >>> cobertizo = bikeShed () Normalmente, los attrios de acceso funcionan como se espera, porque estamos usando La función GetAtTRT estándar para el Guardia _GETETTR_: >>> SRC = '' '... imprimir cobertizo.color ... resultado = impreso ...' '' >>> código = compile_restrice (SRC, '', 'EXEC') >>> EXEC (código) >>> resultado 'verde 'Sin embargo, cambiar un atributo no funciona: >>> src =' '' ... cobertizo.colour = 'rojo' ... '' '>>> código = compile_restrice (src' ',' ejecut ' ) >>> EXEC (código) Traceback (última llamada más reciente): ... TypeError: Objeto de atributo menos (Asignar o DEL) Como se dice, este protector de escritura en particular (Full_WRITE_GUARD) permitirá el código restringido para modificar listas y diccionarios: >>> fibonacci = >>> traducir = DICT (One = 1, Dos = 2, Tres = 3) >>> src = '' '... # # error correcto en LISTA ... FIBONACCI = 5 ... # Un artículo no pertenece ... del Trad ... '' '>>> Code = Compile_Restrice (SRC,' ',' EXEC ') >>> EXEC (CÓDIGO) >>> Fibonacci >>> Ordenada (TRNTER.KEYS ()) Requisitos: · Python ¿Qué hay de nuevo en este lanzamiento: · Pruebas agregadas para el módulo de utilidades. · Filtrado de deprecationWarnings al importar el módulo de los conjuntos de Python.


Restringido pesar Software relacionado

Liblasi

LIBLASI es una biblioteca simple que proporciona una interfaz de salida de transmisión C ++ para crear documentos PostScript. ...

137

Descargar

Desear

Desk es un módulo Perl creado para implementar el comando "QUERO". ...

255

Descargar

Domingo

Domingo es una interfaz fácil de usar, consistente y orientada a objetos a la API de Lotus Notes / Domino Java-API. ...

175

Descargar