html - plus - ¿Cómo se rompen los widgets Google++1 de su iframe?
google+ social icon (2)
El widget Google +1 es JavaScript que se ejecuta en su sitio web que está creando un iframe
. Este widget JavaScript se ejecuta dentro del contexto de su sitio web y, por lo tanto, no está restringido 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 un simple iframe
.
Otra cosa, ¿por qué Google está usando un iframe
? ¿Por qué no generar un div
en la página? Bien, porque el enlace se origina en el iframe
, se puede incrustar un token CSRF (falsificación de solicitudes entre sitios) en la solicitud y el sitio principal no puede leer este token y falsificar la solicitud. Entonces, el iframe
es una medida anti-CSRF que depende de las reglas de herencia de origen para protegerse de un padre malicioso.
Desde una perspectiva de ataque, esto se parece más a XSS (scripts de sitios cruzados) que a UI-Redress. Le está dando acceso a Google a su sitio web y podrían secuestrar las cookies de sus usuarios o realizar XmlHttpRequests
contra su sitio web si así lo desean (pero entonces las personas los demandarían por ser maliciosos y ricos).
En esta situación, TIENE que confiar en Google, pero Google no confía en usted.
Hay formas de mitigar el impacto de la privacidad de estos virus web .
De alguna manera, al pasar el mouse sobre uno de Google+ uno más puede introducir un trato tipo tooltip que es claramente más grande que el elemento <iframe>
en el que está contenido. He inspeccionado el DOM para confirmar esto. *
Asi que:
¿Qué? ¿¡Cómo!?
¿No es esta una gran oportunidad para hacer clickjack, si se usa maliciosamente? (¡Imagine 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 iframe
creado dinámicamente.
Google usa iFrames para evitar "DIV estándar con fugas". Su diálogo de biblioteca de cierre hace lo mismo. Probablemente sea para que otro contenido no pueda sangrar en el botón +1. http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/dialog.html .