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. Por suerte, en la Web, el navegador proporciona muchas funciones de seguridad. Algunas están disponibles para que los desarrolladores las habiliten, y otras están activadas de forma predeterminada para proteger a los usuarios.

La idea de una "zona de pruebas"

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 en un parque de juegos donde los niños pueden crear lo que quieran dentro del límite sin ensuciar 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 es posible que no tenga acceso a un archivo JSON externo. Esto se debe a una función de zona de pruebas llamada mismo origen.

¿Por qué es necesaria una zona de pruebas?

Todos los días, los usuarios de la Web descargan código arbitrario y lo ejecutan en su computadora o teléfono varias veces. Si alguien te dijera "¡Hola! Descarga y ejecuta esta aplicación", es posible que te detengas a pensar si la aplicación proviene de una fuente confiable, leas sobre el proveedor de la aplicación o revises las opiniones con atención. ¿Qué sucede cuando alguien te envía una URL que dice "consulta esta entrada de blog"? Probablemente harías clic en ella sin hacer preguntas como "¿Qué tipo de JavaScript descargará este sitio?".

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

Diseño seguro

Si el navegador coloca en zona de pruebas cada aplicación web, ¿deberíamos preocuparnos por la seguridad? ¡Claro que sí!

En primer lugar, las funciones de zona de pruebas no son el escudo perfecto. Aunque los ingenieros de navegadores trabajan arduamente, los navegadores podrían tener vulnerabilidades, y los atacantes siempre intentan eludir la zona de pruebas (como con el ataque Spectre).

A veces, la zona de pruebas puede impedir la creación de una excelente experiencia web. Por ejemplo, un navegador puede bloquear una solicitud de recuperación a una imagen alojada en un dominio diferente. Puedes compartir recursos en diferentes dominios activando el uso compartido de recursos multiorigen (CORS), pero si no se hace con cuidado, puedes exponer un recurso a todos los demás en la Web, lo que básicamente deshace 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 CORS y la política del mismo origen.