¿Cómo se rompen los widgets de Google+ +1 de su iframe?


145

De alguna manera, al pasar el cursor sobre un widget de Google+ más uno puede introducir un acuerdo de tipo de información sobre herramientas que es claramente más grande que el <iframe>elemento en el que está contenido. He inspeccionado el DOM para confirmar esto. *

límites de iframe

Entonces:

  1. ¿Qué? ¿¡Cómo!?

  2. ¿No es esta una gran oportunidad para hacer clickjacking, si se usa maliciosamente? (¡Imagina a alguien haciendo un MITM para estos widgets sociales!)

* Actualización: Lo que vi fue que el mensaje de información sobre herramientas estaba en un segundo, creado dinámicamente iframe.

Respuestas:


181

El widget de Google +1 es JavaScript que se ejecuta en su sitio web que está creando un iframe. Este widget de JavaScript se ejecuta en el contexto de su sitio web y, por lo tanto, no está limitado por las Reglas de herencia de origen para iframes . Por lo tanto, este widget de JavaScript puede establecer los eventos DOM que desee en el sitio principal, aunque parezca ser un simpleiframe .

Otra cosa, ¿por qué utiliza Google un iframe? ¿Por qué no solo generar un diven la página? Bueno, debido a que el enlace se origina en el iframe, un token CSRF (falsificación de solicitud entre sitios) se puede incrustar en la solicitud y el sitio principal no puede leer este token y falsificar la solicitud. Entonces eliframe es una medida anti-CSRF que se basa en las reglas de herencia de origen para protegerse de un padre malintencionado.

Desde una perspectiva de ataque, esto se parece más a XSS (scripting entre sitios) que a UI-Redress. Le está dando acceso a Google a su sitio web y podrían secuestrar las cookies de sus usuarios o actuar XmlHttpRequestscontra su sitio web si así lo desean (pero luego las personas los demandarían por ser maliciosos y ricos).

En esta situación, DEBE confiar en Google, pero Google no confía en usted.

Hay formas de mitigar el impacto en la privacidad de estos errores web .


Grandes cosas: agradezco su comentario sobre: ​​XSS, que tiene mucho sentido. Sin embargo, todavía no estoy seguro de algo. Parece que el contenido en cuestión no está dentro de <iframe>, lo que sugiere que puede ser cierto (y explique cómo es posible). Pero no parece ser que este sea el caso, desde la inspección del DOM. ¡Y expondría mi nombre y dirección de Gmail a padres maliciosos (a menos que se envuelva en un segundo iframe)!
Alan H.

3
@ Alan H. Sí, están haciendo cosas extrañas con iframes dinámicos. Al hacer clic en el +1, aparecerá la ventana donde agrega un comentario. Si carga Firebug e inspecciona ese elemento, obtendrá un src de iframe para plusone.google.com/u/0 / _ / + / fastbutton? Url = ... Este iframe contiene el token CSRF para enviar a google +.
torre

En algunos casos, puede evitar el secuestro de Cookie configurándolos con httponly.
seppo0010

1
@ seppo0010 sí, pero eso no detiene los XHR.
torre

3

Google usa iFrames para evitar "DIV estándar con fugas". Su diálogo de biblioteca de cierre hace lo mismo. Probablemente sea solo para que otro contenido no pueda sangrar en el botón +1. http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/dialog.html .


Como Rook explicó en su respuesta, el <iframe> se usa para evitar que el sitio que usa el código del widget Google +1 use el ataque CSRF para hacer clic en el enlace por sí mismo (y para mejorar artificialmente la calificación +1 del sitio). Esa es la parte en la que Google no confía en ti.
Mikko Rantalainen
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.