Un sandbox es un mecanismo de seguridad para aislar uno o más procesos de otros procesos en un sistema informático. Un entorno limitado intenta evitar el acceso a cualquier parte del sistema fuera de un entorno aislado. Los sandboxes son útiles para garantizar que el código errante no afecte la estabilidad del sistema y limite el código no confiable a un subconjunto del sistema. Se utilizan en todo, desde navegadores web hasta lenguajes de programación basados en VM y sistemas operativos virtualizados.
Los sandboxes se implementan mediante una variedad de métodos, que incluyen:
- A través del proceso y el aislamiento del usuario. Al limitar el código a procesos distintos (como lo hace Chrome) o usuarios únicos (como lo hace Android), limita lo que ese código puede hacer, ya que los sistemas operativos controlan las interacciones entre procesos y usuarios.
- A través de mecanismos del sistema operativo, como
ychroot()
Unix. Esta funcionalidad permite el aislamiento a nivel del núcleo y la restricción de recursos. Conjail()
, por ejemplo, puede limitar un proceso a un subconjunto del sistema de archivos. Cuando el sistema operativo implementa un sandbox, a menudo se lo llama cárcel .chroot()
- A través de la limitación de permisos o capacidades, como a través de permisos de sistema de archivos, capacidades POSIX o reglas SELinux.
- A través de máquinas virtuales (VM) como Java VM. Una VM implementa un entorno virtualizado con un subconjunto restringido de funcionalidad. Una máquina virtual Java, por ejemplo, solo puede (en teoría) ejecutar código de bytes de Java en formas específicas, prescritas y seguras, como lo limita el tiempo de ejecución de Java.
- A través de la virtualización de hardware. La virtualización de hardware proporciona soporte de procesador para ejecutar código en un entorno virtualizado, con acceso restringido al sistema físico. Es la virtualización de hardware que permite software como VMware (empresa) y Xen. Con Xen, por ejemplo, puede tener cientos de instancias de Linux ejecutándose una al lado de la otra en una sola máquina física, cada una creyendo que solo tiene el control exclusivo de la máquina física y ninguna puede interactuar con la otra.
Una pieza de software consciente de la seguridad, como el rastreador web de Google, Googlebot , probablemente utiliza una combinación de estas técnicas.
- ¿Es útil una certificación A + o una certificación Linux + para alguien que intenta entrar en el desarrollo de software con antecedentes que no son CS?
- Gestión de proyectos: ¿Cuáles son las mejores prácticas para establecer líneas de fecha en proyectos de investigación y desarrollo?
- ¿Cuál es el estado actual de la interoperabilidad de .NET y Ruby on Rails?
- ¿Cuánto cuesta hacer una aplicación?
- ¿Cuáles son los principios de diseño para escribir API de back-end para una aplicación que requiere mucha IU?