Zona de pruebas del navegador

Mariko Kosaka

Para defenderse de los ataques, un desarrollador debe mitigar las vulnerabilidades y agregar funciones de seguridad a una aplicación. Afortunadamente, en la Web, el navegador ofrece muchas funciones de seguridad. Algunas están disponibles para que los desarrolladores las habiliten, mientras que otras están activadas de forma predeterminada para proteger a los usuarios.

navegador como zona de pruebas
Figura: El navegador como zona de pruebas

Los navegadores web modernos se basan en la idea de una "zona de pruebas". Una zona de pruebas es un mecanismo de seguridad que se usa para ejecutar una aplicación en un entorno restringido. Al igual que la zona de pruebas física de un parque de juegos, en la que los niños pueden crear lo que quieran dentro del límite sin causar desorden en otro lugar, el código de la aplicación tiene la libertad de ejecutarse en un entorno restringido. Por ejemplo, JavaScript puede agregar y modificar elementos en la página, pero puede tener restricciones de acceso a un archivo JSON externo. Esto se debe a una función de zona de pruebas llamada del mismo origen

¿Por qué es necesaria una zona de pruebas?

Todos los días, los usuarios de la Web descargan códigos arbitrarios y lo ejecutan en su computadora o teléfono varias veces. Si alguien te dijo "¡Hola! ¡Descarga y ejecuta esta aplicación!", puedes detenerte a pensar si esa aplicación proviene de una fuente de confianza, leer sobre el proveedor de la aplicación o revisar las opiniones con atención. ¿Qué sucede cuando alguien te envía una URL que dice "echa un vistazo a esta entrada de blog"? Probablemente harías clic en él sin hacer preguntas como "¿Qué tipo de JavaScript descargará este sitio?".

La zona de pruebas del navegador es la función clave que simplifica la navegación en la Web, ya que hace que la ejecución de código arbitrario sea más segura.

Diseño de seguridad integral

Si el navegador incluye cada aplicación web en una zona de pruebas, ¿deberíamos importar incluso la seguridad? ¡Claro que sí!

En primer lugar, las funciones de la zona de pruebas no son el escudo perfecto. Si bien los ingenieros de navegadores hacen un gran esfuerzo, los navegadores podrían tener vulnerabilidades y los atacantes siempre intentan evitar la zona de pruebas (como con Spectre Attack).

A veces, el espacio aislado puede obstaculizar la creación de una gran experiencia web. Por ejemplo, un navegador puede bloquear una solicitud de recuperación de una imagen alojada en un dominio diferente. Puedes compartir recursos en diferentes dominios si activas el uso compartido de recursos entre dominios (CORS). Sin embargo, si no se hace con cuidado, puedes exponer un recurso a todos los demás en la Web y deshacer la zona de pruebas.

Conclusión

Solo se puede lograr una experiencia web segura si la seguridad está integrada en el diseño de tu aplicación, y un diseño sólido comienza con la comprensión de las funciones existentes. En las siguientes dos guías, se profundiza en el CORS y la política del mismo origen.