Como os widgets do Google+ +1 saem do iframe?


145

De alguma forma, passar o mouse sobre um widget do Google+ mais um pode introduzir uma oferta do tipo dica de ferramenta claramente maior do que o <iframe>elemento em que está contido. Inspecionei o DOM para confirmar isso. *

limites iframe

Assim:

  1. O que? Quão!?

  2. Não é uma grande oportunidade para o clickjacking, se usado maliciosamente? (Imagine alguém fazendo um MITM para esses widgets sociais!)

* Atualização: O que vi foi que a mensagem de dica de ferramenta-y estava em um segundo, criada dinamicamente iframe.

Respostas:


181

O widget do Google +1 é JavaScript que é executado no seu site que está criando um iframe. Este widget JavaScript está em execução no contexto do seu site e, portanto, não é restrito pelas Regras de Herança de Origem para iframes . Portanto, esse widget JavaScript pode definir os eventos DOM que desejar no site pai, mesmo que pareça simples iframe.

Outra coisa, por que o Google está usando um iframe? Por que não gerar apenas um divna página? Bem, como o link se origina do iframe, um token CSRF (falsificação de solicitação entre sites) pode ser incorporado na solicitação e o site pai não pode ler esse token e forjar a solicitação. Portanto, iframeé uma medida anti-CSRF que se baseia nas regras de herança de origem para se proteger de um pai mal-intencionado.

Do ponto de vista do ataque, isso é mais parecido com o XSS (script entre sites) do que com a Redução de UI. Você está dando acesso ao Google ao seu site e eles podem seqüestrar os cookies de seus usuários ou funcionar XmlHttpRequestscontra o seu site, se assim o desejarem (mas as pessoas os processariam por serem maliciosos e ricos).

Nessa situação, você precisa confiar no Google, mas o Google não confia em você.

Existem maneiras de mitigar o impacto na privacidade desses bugs na web .


Ótimas coisas - agradeço seu comentário sobre: ​​XSS, o que faz muito sentido. Ainda não tenho certeza de alguma coisa. O conteúdo em questão parece não estar dentro do <iframe>, o que você sugere pode ser verdadeiro (e explicar como é possível). Mas não parece ser esse o caso, de inspecionar o DOM. E exporia meu nome e endereço do Gmail a pais mal-intencionados (a menos que envoltos em um segundo iframe)!
27711 Alan H.

3
@ Alan H. Sim, eles estão fazendo coisas bizarras com iframes dinâmicos. Se você clicar no +1, você verá a janela onde você adiciona um comentário. Se você carregar o firebug e inspecionar esse elemento, receberá um iframe src para plusone.google.com/u/0 / _ / + / fastbutton? Url = ... Esse iframe contém o token CSRF para envio ao google +.
rook

Em alguns casos, você pode evitar o seqüestro de cookies, definindo-os com a ativação normal.
seppo0010

1
@ seppo0010 sim, mas isso não impede os XHRs.
rook

3

O Google usa iFrames para evitar "DIVs padrão com vazamentos". O diálogo da biblioteca de fechamento faz a mesma coisa. Provavelmente é apenas para que outro conteúdo não possa sangrar no botão +1. http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/dialog.html .


Como Rook explicou em sua resposta, o <iframe> é usado para impedir que o site que usa o código do widget do Google +1 use o ataque CSRF para clicar no link por si só (e melhorando artificialmente a classificação do site +1). Essa é a parte em que o Google não confia em você.
Mikko Rantalainen
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.