web-dev-qa-db-fra.com

Comment les widgets Google+ +1 sortent-ils de leur iframe?

D'une manière ou d'une autre, le survol d'un widget Google+ plus un peut introduire un accord de type info-bulle qui est clairement plus grand que le <iframe> élément dans lequel il est contenu. J'ai inspecté le DOM pour le confirmer. *

iframe boundaries

Donc:

  1. Quelle? Comment!?

  2. N'est-ce pas une énorme opportunité pour le détournement de clic, s'il est utilisé avec malveillance? (Imaginez que quelqu'un fasse un MITM pour ces widgets sociaux!)

* Mise à jour: Ce que j'ai vu, c'est que le message d'info-bulle-y était dans une seconde, créé dynamiquement iframe.

145
Alan H.

Le widget Google +1 est JavaScript qui s'exécute sur votre site Web qui crée un iframe. Ce widget JavaScript s'exécute dans le contexte de votre site Web et n'est donc pas contraint par les règles d'héritage d'origine pour les iframes . Par conséquent, ce widget JavaScript peut définir les événements DOM qu'il souhaite sur le site parent, même s'il semble être simplement un simple iframe.

Autre chose, pourquoi Google utilise-t-il un iframe? Pourquoi ne pas simplement générer un div sur la page? Eh bien, car le lien provient du iframe, un jeton CSRF (contrefaçon de demande intersite) peut être incorporé dans la demande et le site parent ne peut pas lire ce jeton et forger la demande. Ainsi, le iframe est une mesure anti-CSRF qui s'appuie sur les règles d'héritage d'origine pour se protéger contre un parent malveillant.

Du point de vue d'une attaque, cela ressemble plus à XSS (cross-site scripting) qu'à UI-Redress. Vous donnez à Google l'accès à votre site Web et ils pourraient détourner les cookies de vos utilisateurs ou effectuer XmlHttpRequests contre votre site Web s'ils le souhaitent (mais les gens les poursuivraient en justice pour être malveillants et riches).

Dans cette situation, vous DEVEZ faire confiance à Google, mais Google ne vous fait pas confiance.

Il existe des moyens d'atténuer l'impact de ces bogues sur la vie privée .

181
rook

Google utilise des iFrames pour empêcher les "DIVs qui fuient". Leur dialogue de fermeture de bibliothèque fait la même chose. C'est probablement juste pour que d'autres contenus ne puissent pas saigner dans le bouton +1. http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/dialog.html .

3
xrd