¿Por qué las llamadas IMG no violan el SOP (Política del mismo origen)?

2

Estoy un poco confundido con respecto al tema de la Política de Same Origin.

Si entiendes correctamente. El propósito de SOP es evitar que una página obtenga acceso a datos confidenciales en otra página web.

Entonces, por ejemplo, ¿por qué puedo obtener simplemente una imagen sensible de un origen diferente? Eso violaría la idea de SOP.

    
pregunta Eric Peers 26.07.2018 - 20:29
fuente

4 respuestas

1

La aplicación no puede obtener datos confidenciales del IMG. Si intenta leer los datos de píxeles con una etiqueta, por ejemplo, el navegador debería lanzar una excepción SOP, a menos que se use cors. Dado que la imagen puede ser vista (por el usuario humano) pero no programada (por el código JS), la política de la imagen se considera "suficientemente buena".

Debo señalar que es / fue posible obtener las dimensiones de la imagen desde una imagen remota, que podría ser considerada información sensible, especialmente en urls de imágenes dinámicas que muestran un "bueno / malo" Imagen de diferentes dimensiones que se altera en función de algún estado. Aún así, eso es una cantidad mínima de información, y no suele ser un problema de privacidad.

Cambiar esta política rompería una tonelada de sitios, lo que requiere un "enlace profundo" para mostrar los activos de las redes de distribución de contenido, imgur, etc.

    
respondido por el dandavis 26.07.2018 - 21:03
fuente
1

Esto se considera aceptable porque los scripts están limitados para interactuar con imágenes de origen cruzado a menos que se establezca crossorigin="anonymous" , lo que le indica al navegador que no envíe cookies u otras credenciales cuando recupere la imagen. Sin configurar crossorigin="anonymous" , los scripts pueden recuperar dimensiones, pero no datos de píxeles de la imagen debido a la lienzo contaminado .

Esto está bien en teoría, aunque ha habido un canal lateral ataques en el pasado que filtró datos de píxeles.

    
respondido por el AndrolGenhald 26.07.2018 - 21:18
fuente
0

Las etiquetas de imagen solo envían una solicitud GET al objetivo y capturan el contenido si el objetivo es una imagen. Intente incrustar una página con información confidencial dentro de una etiqueta de imagen, enviará una solicitud GET, pero no devolverá nada de naturaleza sensible.

Javascript tiene el potencial de enviarte a una página y devolver el contenido de la página (utilizando ajax, esto puede lograrse).

Esto obviamente es problemático, ya que algunas páginas contendrán información confidencial y, como tal, solo debería ser posible con ciertas API y páginas dentro del mismo sitio web.

    
respondido por el Cillian Collins 26.07.2018 - 21:59
fuente
0

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 ...

    
respondido por el curiousguy 02.11.2018 - 02:12
fuente

Lea otras preguntas en las etiquetas