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

ElevenPaths    24 diciembre, 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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *