¿Qué es el sandboxing?

118

He leído el artículo de Wikipedia , pero no estoy realmente seguro de lo que significa y qué tan similar es al control de versiones .

Sería útil que alguien pudiera explicar en términos muy simples qué es el sandboxing.

Lazer
fuente

Respuestas:

266

ingrese la descripción de la imagen aquí

Un arenero o cajón de arena es un recipiente bajo y ancho o una depresión poco profunda llena de arena en la que los niños pueden jugar. Muchos propietarios de viviendas con niños construyen areneros en sus patios traseros porque, a diferencia de muchos equipos de juegos infantiles, pueden construirse de manera fácil y económica. Un "arenero" también puede indicar una mina de arena a cielo abierto.

Bueno, una caja de arena de software no es diferente a una caja de arena construida para que juegue un niño. Al proporcionar una caja de arena a un niño, simulamos el entorno de un campo de juego real (en otras palabras, un isolated environment) pero con restricciones sobre lo que un niño puede hacer. Porque no queremos que el niño se infecte o no queremos que cause problemas a los demás. :) Cualquiera que sea la razón, solo queremos poner restricciones sobre lo que el niño puede hacer Security Reasons.

Ahora, llegando a nuestro entorno de pruebas de software, dejamos que cualquier software (niño) se ejecute (juegue), pero con algunas restricciones sobre lo que puede hacer. Podemos sentirnos seguros sobre lo que puede hacer el software en ejecución.

Ha visto y usado software antivirus. ¿Correcto? También es una especie de caja de arena. Pone restricciones sobre lo que puede hacer cualquier programa. Cuando se detecta una actividad maliciosa, se detiene e informa al usuario que "esta aplicación está intentando acceder a recursos fulanos. ¿Desea permitir?".

Descargue un programa llamado sandboxie y podrá obtener una experiencia práctica de una caja de arena. Con este programa puede ejecutar cualquier programa en un entorno controlado.

Las flechas rojas indican los cambios que fluyen de un programa en ejecución a su computadora. El cuadro etiquetado Disco duro (sin caja de arena) muestra los cambios realizados por un programa que se ejecuta normalmente. El cuadro etiquetado Disco duro (con sandbox) muestra los cambios realizados por un programa que se ejecuta en Sandboxie. La animación ilustra que Sandboxie puede interceptar los cambios y aislarlos dentro de una caja de arena, representada como un rectángulo amarillo. También ilustra que agrupar los cambios facilita eliminarlos todos a la vez.

ingrese la descripción de la imagen aquí

Ahora, desde el punto de vista de un programador, sandbox está restringiendo la API permitida para la aplicación. En el ejemplo del antivirus, estamos limitando la llamada al sistema (API del sistema operativo).

Otro ejemplo serían las arenas de codificación en línea como topcoder. Envías un código (programa) pero se ejecuta en el servidor. Para el safetydel servidor, deben limitar el nivel de acceso de API del programa. En otras palabras, necesitan crear una caja de arena y ejecutar su programa dentro de ella.

Si tiene un sandox adecuado, incluso puede ejecutar un archivo infectado con virus y detener toda la actividad maliciosa del virus y ver por sí mismo lo que está tratando de hacer. De hecho, este será el primer paso de un investigador de antivirus.

garras
fuente
31

Esta definición de sandboxing básicamente significa tener entornos de prueba (integración de desarrolladores, garantía de calidad, escenario, etc.). Estos entornos de prueba imitan la producción, pero no comparten ninguno de los recursos de producción. Tienen servidores, colas, bases de datos y otros recursos completamente separados.

Más comúnmente, he visto que la zona de pruebas se refiere a algo como una máquina virtual: aislar algún código en ejecución en una máquina para que no pueda afectar el sistema base.

Kaleb Brasee
fuente
1
bien, básicamente el sandboxing es probar un software en un entorno controlado antes de ponerlo en uso normal. ¿Derecha? por cierto, ¿por qué se llama 'sandboxing'?
Lazer
>> ¿Por qué se llama 'sandboxing' @eSKay porque la gente juega con software / hardware como niños en sus sandboxes ( thefreedictionary.com/sandbox - definición # 3).
Darmen Amanbayev
Entonces, ¿cuál es la diferencia entre entornos sandbox y de ensayo?
Mohammad Jamal Dashtaki
15

Para un ejemplo concreto: suponga que tiene una aplicación que se ocupa de las transferencias de dinero. En el entorno de producción, se intercambia dinero real. En el entorno de espacio aislado, todo funciona exactamente igual, pero el dinero es virtual. Es con fines de prueba.

Paypal ofrece un entorno de espacio aislado, por ejemplo.

JRL
fuente
6

Para el "sandbox" en el desarrollo de software, significa desarrollar sin molestar a otros de forma aislada.

No es similar al control de versiones. Pero algún método de control de versiones (como ramificación) puede ayudar a crear cajas de arena.

Francis
fuente
0

Más a menudo nos referimos al otro sandbox .


De todos modos, sandbox a menudo significa un entorno aislado . Puede hacer lo que quiera en la caja de arena, pero su efecto no se propagará fuera de la caja de arena. Por ejemplo, en el desarrollo de software, eso significa que no necesita meterse con cosas /usr/libpara probar su biblioteca, etc.

Kennytm
fuente