Pregunta

Quiero que los desarrolladores escriban algunas aplicaciones personalizadas para un sitio en JavaScript, pero quiero sandbox para que no puedan hacer nada travieso como redirigir al usuario, configurar la pantalla del cuerpo en ninguno, etc. Tengo un espacio de nombres en JavaScript donde todos Las funciones que necesitarán existen allí, así que estaba pensando en crear una caja de arena sería una cuestión de:

with(Namespace) {
    //App code goes here where they can only access Namespace.*
}

¿Cómo es fácil evitar esto y qué otros métodos se pueden hacer? Preferiría no tener que moderar cada aplicación enviada.

¿Fue útil?

Solución

Para hacer cumplir una caja de arena, tendría que inspeccionar el código antes de que se ejecute, capturar cualquier código no legítimo y, si se encuentra, de alguna manera evitar que se ejecute. Muy tedioso y propenso por errores durante mucho tiempo.

Facebook hizo esto al menos en su plataforma temprana, yo, como desarrollador, definitivamente no lo disfruté. Limitaron los métodos nativos que podrían usarse y proporcionaron envoltorios limitados alrededor de algunos.

Otros consejos

Bueno, las opciones para el código de sandbox en este momento son:

Ambos te permiten crear un ambiente seguro donde el acceso al objeto global y el DOM está restringido.

El propósito principal de estos proyectos es permitirle incrustar los widgets de manera segura y cualquier contenido web de terceros.

Lo primero que viene a la mente es eval. Pueden usarlo para ejecutar código personalizado fuera del sandbox de envoltura. Será muy difícil detener a un desarrollador determinado intentando envolver el código.

Enlace al uso de eval.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top