¿Deben ejecutarse los scripts de extensión en un sandbox?


11

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).


¿Para qué tipo de juego? Para un producto listo para usar, vendido a 100.000 clientes, y todos los que gustan pueden escribir guiones para él. ¿O para un producto vendido 50 veces y usted es el único que proporciona scripts adicionales?
Doc Brown

Respuestas:


2

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.

En conclusión, puedo decir que aunque parece que no vale la pena hacer un sandbox para su producto, en realidad el desarrollador o el grupo de desarrolladores obtendrán más beneficios, ya que como el usuario final puede configurar fácilmente su entorno en el desarrollador, también puede tener menos tiempo para hacer cambios a la estructura funcional. Estoy firmemente convencido de que un juego sandbox (como en la escalabilidad del software) permite una evolución creativa de sus extensiones y una evolución natural de sus funcionalidades.


1
Creo que estás usando 'sandbox' en el sentido del juego, pero el OP lo estaba usando en el sentido de la seguridad. Parecen dos conceptos bastante poco relacionados.
bdsl

2

Es difícil acertar

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.

pero es probable que mi sandbox termine goteando de todos modos

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á.

El único beneficio que se me ocurre sería brindar a los usuarios una sensación de seguridad al ejecutar scripts de terceros.

Esta es exactamente la razón por la que debe hacer sandboxing y no es un argumento válido contra sandboxing.

Las desventajas serían que es increíblemente molesto para los escritores de extensiones.

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 .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.