Sandboxing de Python en Python puro plantea desafíos únicos, ya que implica aislar el código Python del entorno host para evitar usuarios malintencionados de comprometer el sistema. Exploremos los dos enfoques principales para este problema e identifiquemos alternativas adecuadas para crear un entorno de scripting seguro.
Messa sugiere crear un entorno de ejecución restringido con acceso limitado a los globales . Si bien este método proporciona una apariencia de protección, es susceptible a vulnerabilidades que permiten que el código escape del entorno limitado. Los usuarios malintencionados pueden explotar excepciones, manipular estados internos o utilizar la manipulación de códigos de bytes para salir del entorno limitado.
Este enfoque implica analizar el código Python y eliminarlo selectivamente. construcciones no deseadas usando el módulo ast. Al eliminar declaraciones de importación, llamadas a funciones y otros riesgos potenciales de seguridad, es posible crear un entorno de ejecución seguro adaptado a requisitos específicos.
Si la sintaxis de secuencias de comandos Pythonic no es una Por estricta necesidad, considere utilizar otros intérpretes de scripts de código abierto escritos en Python puro que cumplan con los criterios de variables, condicionales y llamadas a funciones. Estos intérpretes pueden ofrecer una base más sólida y segura para su juego web.
Para aquellos que no utilizan Google App Engine (GAE), PyPy Sandbox ofrece una solución de espacio aislado supuestamente "real". Sus capacidades han sido elogiadas por usuarios que dan fe de su efectividad para prevenir escapes del entorno sandbox.
Sus requisitos mencionan específicamente la compatibilidad con variables, condicionales básicos y llamadas a funciones (excluidas las definiciones). ). El enfoque 2, que implica análisis de código y manipulación de AST, parece una opción viable para evaluar. Permite la personalización y puede eliminar de manera efectiva construcciones innecesarias.
El aislamiento de Python en Python puro se puede lograr mediante una cuidadosa consideración de los entornos de ejecución y las técnicas de análisis de código. Si bien un lenguaje de programación verdaderamente completo puede ser excesivo para tu juego, las alternativas presentadas aquí ofrecen un equilibrio entre flexibilidad y seguridad.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3