2012-05-10 13 views
24

Estoy haciendo estas preguntas porque desarrollaremos una aplicación que se supone que comparte datos de origen cruzados a través de javascript. Una posible solución parece JSONP, ya que utiliza etiquetas SCRIPT para extraer datos de otros dominios. Sin embargo, me gustaría evitar la situación en la que implementamos nuestro impresionante código suponiendo que la etiqueta SCRIPT no está sujeta a sop y en algún momento los navegadores prohíben esta funcionalidad.Por qué la etiqueta HTML SCRIPT no está sujeta a la misma política de origen

¿Alguien puede arrojar algo de luz sobre cuál es el motivo de que la etiqueta SCRIPT permita solicitudes de dominios cruzados?

+0

Por la misma razón que las etiquetas no están sujetas a ella. – Corbin

+0

¿Cuál sería esa razón y cómo se aplica a las secuencias de comandos (ejecutables)? – moritz

+6

La misma política de origen es, en cierto modo, por qué las etiquetas de scripts de otros dominios son seguras. No incluye accidentalmente una etiqueta de secuencia de comandos en su marcado (con suerte no de todos modos), pero no puede garantizar la seguridad del código que incluye si no lo controla. Es posible que desee incluir algunos JS para que pueda tener anuncios en su página, pero no querrá que ese sitio web de anuncios tenga acceso a las cookies de sesión de los usuarios. – Corbin

Respuesta

2

Es la misma razón por la cual se puede utilizar (no leer, como en conseguir el archivo de secuencias de comandos contenidos), los estilos y las imágenes alojadas de otros dominios.


leí the spec regerding scripts, y que no indica nada acerca de por qué. Todo lo que dice es:

Si el src tiene un valor de URI, los agentes de usuario deben ignorar los contenidos del elemento y recuperar el script a través del URI.

recuperar [y ejecutar]

+0

Los estilos y las imágenes no son intrínsecamente peligrosos, además: cualquier solicitud de Ajax no puede realizar solicitudes de dominios cruzados, ¿por qué hacer una excepción para la etiqueta de secuencia de comandos? ¿Estás sugiriendo que es por razones históricas? – moritz

+3

@mosch [Las imágenes también pueden ser peligrosas] (http://seclists.org/isn/2004/Sep/88) –

+0

Los estilos y las imágenes * están * sujetos a la misma política de origen. La propiedad '.cssRules' de una 'CSSStyleSheet' (por ej.' Document.styleSheets [0] 'es' null' para recursos de un origen diferente. Las imágenes no se pueden manipular en un lienzo si son de otro dominio. –

3

supongo this draft titulado "Principios del mismo origen Política", explica (aunque sea brevemente) lo que está más o menos en la cabeza de todos:

En principio, el usuario los agentes pueden tratar cada URL como un principal separado y aislar cada documento de cualquier otra URL a menos que el documento indique explícitamente que confiaba en esa URL. Desafortunadamente, este diseño es engorroso para los desarrolladores porque las aplicaciones web a menudo consisten en una cantidad de recursos que actúan en concierto.

Como aproximación, las agencias de usuarios agrupan las URL juntas en dominios de protección llamados orígenes. En particular, dos URL son parte del mismo origen (es decir, representan el mismo principal) si tienen el mismo esquema, host y puerto.

En resumen: sería mucho más difícil construir la Web si todo estaba sujeto a SOP.

+0

Gracias por la perspicaz respuesta, esto también es lo que sugiere el enlace de GGG (sobre imágenes) pero lo que no veo es ¿por qué tengo una misma política de origen cuando existen métodos fáciles para circuncidarla? ¿podría estar seguro de que en cinco años los navegadores aún hacen posible JSONP? – moritz

+0

@mosch: JSONP requiere que el cliente y el servidor cooperen explícitamente y que el cliente confíe plenamente en el servidor; no lo llamaría un método fácil. funciona, es un "protocolo" entre cliente y servidor del que el agente de usuario no sabe nada. Es como preguntar "cómo puedo estar seguro de que en cinco años los navegadores no se negarán a cargar hojas de estilo de URL que contengan' foo' ". – Jon

-1

La razón es por herencia. Fue construido de esa manera hace muchos años y si cambia ahora, demasiados sitios fallarán. Además, las implicaciones de seguridad son bien conocidas, ya que han existido por mucho tiempo.

Cuestiones relacionadas