En particular, se trata de extensiones de juegos escritas en lua (luajit-2.0). Estaba contemplando si debería restringir lo que pueden hacer estos scripts, y llegué a la conclusión de que probablemente no debería:
Es difícil acertar. Suena tonto, pero es probable que mi caja de arena termine goteando de todos modos.
El único beneficio que se me ocurre sería brindar a los usuarios una sensación de seguridad al ejecutar scripts de terceros.
Las desventajas serían que es increíblemente molesto para los escritores de extensiones. Es decir, por ahora, yo mismo (el contenido del juego estará mayormente escrito).
La razón por la que pregunto esto antes de tener algo presentable es que agregar un sandbox desde el principio es fácil, pero también me impondría restricciones molestas. Sin embargo, si sigo adelante y luego decido que, después de todo, necesito un sandbox, tendré problemas (tendría que reescribir los scripts que ya están allí o introducir algún tipo de sistema de administración de confianza). lo que parece ser más problemático de lo que vale).
fuente
Respuestas:
Creo que tanto el desarrollo de un videojuego, que en cualquier desarrollo de software de dimensiones medianas y grandes, el programador siempre intentará crear un intercambio de capas u opciones de configuración libre para la funcionalidad futura.
Lua es un lenguaje que permite que estas opciones sean fáciles de implementar para el usuario final y para el desarrollador, pero eso no significa que sea fácil planificar su espacio de trabajo, con la experiencia que puedo decirle hoy, también puede filtrarse una simple multiplicación, si el usuario final puede personalizar su comportamiento.
Si nos centramos en lo que ofrece un juego de sandbox, podemos dejar de entender que el uso final puede ser doble, lo que permite que el juego se vuelva no lineal, interesante y divertido , pero al mismo tiempo no sea un plan fácil. sus límites en el área de trabajo.
Desde el punto de vista de la seguridad, ¡suena fantástico! Se debe implementar un buen entorno de prueba para extensiones en todo tipo de software.
fuente
En realidad, no es muy difícil crear un sandbox básico con una lista blanca de funciones y luego agregar implementaciones personalizadas de funciones potencialmente inseguras. Esta pregunta SO parece un buen punto de partida.
Creo que sería suficiente comenzar a proporcionar cierta seguridad básica: restringir el acceso a archivos fuera de algunos directorios especiales. De todos modos, no existen aplicaciones 100% seguras. Piense en lo que puede suceder si alguien escribe alguna extensión maliciosa: los usuarios probablemente lo culparán como desarrollador. Si planea darle a alguien la oportunidad de escribir extensión, eventualmente necesitará algo de seguridad. Si solo eres tú, está bien como está.
Esta es exactamente la razón por la que debe hacer sandboxing y no es un argumento válido contra sandboxing.
Tengo algo de experiencia en secuencias de comandos de juegos y no me resulta molesto trabajar solo en un entorno de espacio aislado. Lo que me molesta es la falta de funcionalidad relacionada con el juego, como API específicas de objetos en el juego o implementaciones deficientes de los mismos.
Puede ser útil si observa el motor LOVE como un buen ejemplo (si aún no lo ha hecho), especialmente el tutorial sobre la API del sistema de archivos .
fuente