2010-01-24 8 views
86

He leído el Wikipedia article, pero no estoy seguro de lo que significa, y lo similar que es control de versión.¿Qué es sandboxing?

Sería útil si alguien pudiera explicar en términos muy simples qué es el espacio aislado.

Respuesta

205

enter image description here

A sandpit or sandbox es un recipiente bajo, ancho o depresión poco profunda llena de arena en el que los niños pueden jugar. Muchos propietarios con niños construyen pozos de arena en sus patios traseros porque, a diferencia de muchos equipos de juegos, se pueden construir de manera fácil y económica. Un "arenero" también puede denotar una mina de arena a cielo abierto.

Bueno, una caja de arena de software no es diferente de una caja de arena construida para que un niño juegue. Al proporcionar una caja de arena a un niño simulamos el entorno del terreno 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 por Security Reasons.

Ahora, al acceder a nuestro entorno limitado de software, dejamos que se ejecute (juegue) cualquier software (hijo) pero con algunas restricciones sobre lo que (él) puede hacer. Podemos sentir que es seguro & seguro acerca de lo que puede hacer el software de ejecución.

Has visto & software antivirus usado. ¿Derecha? También es un tipo de caja de arena. Pone restricciones sobre lo que cualquier programa puede hacer.Cuando se detecta una actividad maliciosa, se detiene e informa al usuario que "esta aplicación está intentando acceder de modo que & así que los recursos. ¿Desea permitir?".

Descargue un programa llamado sandboxie y podrá obtener experiencia práctica de un arenero. Usando este programa puede ejecutar cualquier programa en un entorno controlado.

Las flechas rojas indican los cambios que fluyen desde un programa en ejecución a su computadora. La casilla etiquetada Disco duro (sin caja de arena) muestra los cambios realizados por un programa que se ejecuta normalmente. El cuadro etiquetado como Disco duro (con caja de arena) muestra los cambios realizados por un programa que se ejecuta en Sandboxie. La animación ilustra que Sandboxie es capaz de interceptar los cambios y aislarlos dentro de un sandbox, representado como un rectángulo amarillo. También ilustra que la agrupación de los cambios hace que sea fácil eliminarlos todos a la vez.

enter image description here

Ahora desde el punto de vista del programador, caja de arena es la restricción de la API que se permite a la aplicación. En el ejemplo del antivirus, estamos limitando la llamada al sistema (API del sistema operativo).

Otro ejemplo sería arenas de codificación en línea como topcoder. Usted envía un código (programa) pero se ejecuta en el servidor. Para el safety del servidor, deben limitar el nivel de acceso de la API del programa. En otras palabras, necesitan crear un entorno limitado y ejecutar su programa dentro de él.

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

+14

gracias @claws por la fantástica explicación. – Lazer

+3

@claws: Gracias por la explicación. – Dipak

+3

Esta fue la mejor explicación de un tema que he visto la mejor parte fue el investigador antivirus, – Milad

-1

Más a menudo nos referimos a the other sandbox.


En cualquier caso, caja de arena a menudo significa un entorno aislado . Puedes hacer lo que quieras en la caja de arena, pero su efecto no se propagará fuera de la caja de arena. Por ejemplo, en desarrollo de software, eso significa que no necesita meterse con cosas en /usr/lib para probar su biblioteca, etc.

+2

esto no es una respuesta real a la pregunta ... – Francis

20

Esta definición de sandboxing básicamente significa tener entornos de prueba (integración del desarrollador, garantía de calidad, etapa, 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 sandboxing referirse a algo así como una máquina virtual - aislar un código de ejecución en una máquina para que no pueda afectar el sistema base.

+0

bien, básicamente sandboxing es para probar un software en un ambiente controlado antes de ponerlo a uso atual. ¿derecho? por cierto, ¿por qué se llama 'sandboxing'? – Lazer

+0

>> por qué se llama 'sandboxing' @eSKay porque las personas juegan con software/hardware como niños en sus cajas de arena (http://www.thefreedictionary.com/sandbox - definition # 3). – Darmen

4

Para la "caja de arena" en el desarrollo de software, significa desarrollar sin molestar a los demás de forma aislada.

No es similar al control de versiones. Pero algún método de control de versiones (como bifurcación) puede ayudar a hacer sandboxes.

9

Para un ejemplo concreto: supongamos 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 para propósitos de prueba.

Paypal ofrece un entorno de espacio aislado, por ejemplo.

0

Google NaCl puede ser un buen ejemplo y puede encontrar muchos buenos ejemplos y explicaciones por allá.

1

La máquina virtual es el mejor ejemplo de sendbox, VM, una computadora host completa, en la cual un sistema operativo convencional puede arrancar y funcionar como en un hardware real. El sistema operativo invitado ejecuta sandbox en el sentido de que no funciona de forma nativa en el host y solo puede acceder a los recursos del host a través del emulador

Cuestiones relacionadas