Intercambio de datos entre páginas: SOP, CORS y WebMessage (I)

martes, 24 de diciembre de 2013

Los navegadores son las aplicaciones más usadas por los usuarios a causa del desplazamiento del escritorio "a la nube" y por la grandes posibilidades que abarcan. La creciente complejidad del navegador ha permitido potenciar sus funcionalidades y (en consecuencia) aumentar los problemas de seguridad y su criticidad. Pero además, ha exigido nuevos métodos de intercambio de información y protocolos. Veamos algunos.

Comentaremos una de las políticas de intercambio implementadas por los navegadores desde hace tiempo (SOP) y otras soluciones "menos estrictas" ideadas para permitir mayor versatilidad y funcionalidad a las aplicaciones web.

Same-Origin Policy (SOP)

Same Origin Policy (SOP), es una de las políticas que implementan los navegadores desde prácticamente su concepción. Su objetivo fundamental (aunque en realidad esta definición se encuentra muy simplificada) es impedir que dominios que no compartan el mismo host, puerto y protocolo sean capaces de acceder a la información de otro dominio. Esta "información" pueden ser cookies, archivos HTML, imágenes, scripts, bases de datos, etc…
Tabla comparativa sobre SOP. Fuente: Wikipedia
En realidad, es un poco más complejo que todo eso. SOP no solo se trata de "acceder a recursos de otro dominio" sino que necesita distinguir entre qué recursos y de qué manera accede a ellos (con el ánimo de leer, escribir o incluso ejecutar). Eric Lawrence lo explica perfectamente en este enlace aplicando el concepto de permisos Unix (RWX) para explicar SOP.

Profunda explicación sobre SOP por Eric Lawrence
La idea de la política se remonta a NetScape Navigator 2.0, implementándose incluso en lenguajes de terceros como Adobe Flash o Adobe Acrobat o en mecanismos del propio navegador como la navegación por DOM. Incluso en el uso de XMLHttpRequest (peticiones HTML 5).

Esta política es implementada por todos los navegadores, aunque algunos navegadores la interpretan a su manera. Por ejemplo Internet Explorer no incluye el puerto como parte del "origen" delegando parte de su funcionamiento a su particular uso de las Zonas. Por ejemplo, si encuentra dos dominios que el usuario haya establecido como "Sitios de Confianza" la política permitirá la comunicación.

Opciones de sitios de confianza de Internet Explorer
Un claro ejemplo de la implementación de SOP y su utilidad, se observa durante la navegación a través del árbol DOM  cuando una web usa la etiqueta IFRAME (que permite incrustar una web dentro de un marco). Ninguno de los documentos podrá acceder al contenido del otro siempre y cuando no estén dentro del mismo dominio, usen el mismo protocolo y el mismo puerto.

Examinando el DOM de una web en la que se bloquea por política
Esta implementación evitaría que cuando el usuario acceda a una web maliciosa con un IFRAME, el atacante sea capaz de recopilar cualquier dato de la web o la cookie de sesión del usuario. Por tanto, la política SOP juega un papel fundamental a la hora de proteger los datos y que estos se compartan con otras entidades.

Sin embargo, en algunas ocasiones esta política puede llegar a ser muy restrictiva, por lo que en HTML 5 se incorporan varias funcionalidades y soluciones que la relajan, llegando a permitir compartir más datos. Un ejemplo es CORS, del que hablaremos en la próxima entrega.
Oscar Sánchez
oscar.sanchez@11paths.com

No hay comentarios:

Publicar un comentario