La Política del mismo origen no es un axioma limpio uniforme: en realidad es un conjunto de reglas específicas y casos especiales fosilizados en la Web moderna. No puede definir la Política del mismo origen con una pequeña descripción breve que capture correctamente los detalles esenciales: los casos especiales realmente importan en la práctica.
Las reglas para las cookies son las reglas de JS, y ni siquiera están perfectamente definidas y son independientes del navegador. Las cookies están muy poco protegidas en la Web moderna debido a estas reglas fosilizadas, que deben tenerse en cuenta en el diseño de la identificación segura de la Web:
- El grado de comunicación entre subdominios permitido por las cookies es extremadamente útil (un subdominio puede configurar una cookie que es utilizada por otro) pero también es una fuente potencial de confusión, ya que el navegador no enviará una cookie con el nombre del Dominio que lo configura.
- Un conjunto de cookies en una página web http se enviará de vuelta al mismo dominio en una página web https, sin indicación de origen.
Por el contrario, las tecnologías web modernas que pueden almacenar datos (como localStorage y sessionStorage) en la tienda del navegador (junto con el "cookie jar") están segregadas estrictamente por origen con el esquema exacto de dominio y URL.
La inclusión de una imagen de otro sitio no tiene que hacerse con un objeto con dimensiones específicas (a diferencia de los elementos de marco donde el diseño se especifica mediante la página de conjunto de marcos o la página que aloja el iframe), por lo que el diseño depende de las dimensiones de la imagen cargada; al menos una página web puede verificar si se puede cargar una imagen URL, lo que a veces puede indicar si un usuario ha iniciado sesión en un sitio web, por ejemplo.
Las reglas para cargar scripts y hojas de estilo son especiales; este es un agujero en la política que es útil para interactuar con otro dominio: un script cargado desde el dominio que proporciona el servicio puede establecer alguna variable para almacenar el resultado de un cálculo. Esta forma muy sucia de hacer llamadas a procedimientos remotos se llama "JSONP".
Y luego, hay canales laterales para medir el tiempo de carga de los recursos que una página no tiene derecho a ver o medir ...