Como os widgets como "http://sharethis.com/" fazem o que parece ser chamadas XSS

StackOverflow https://stackoverflow.com/questions/341966

  •  19-08-2019
  •  | 
  •  

Pergunta

Como é que ferramentas como esta podem fazer uma chamada no estilo Ajax de volta a um site central? Basicamente, eles dão a você uma "tag para colocar em seu site onde quer que esteja. Portanto, neste widget, você tem a capacidade de pedir um email para você ser enviado para você para a página em que você está atualmente. Suponho que isso faça um Ajax O estilo chama de volta para compartilhar isso quem envia o email. Mas como eles podem fazer isso sem um proxy no seu servidor e sem o navegador bloqueá -lo como uma exploração XSS?

Quaisquer respostas sobre isso seriam muito apreciadas, obrigado por sua ajuda. Suponho que trabalhar com a API do Flickr apresentaria os mesmos desafios?

Link do título: http://sharethis.com/

Foi útil?

Solução

Eles oferecem um script para incluir em seu site. Este script tem acesso total ao DOM e seus cookies. Para ligar de volta ao site, eles usam uma técnica chamada JSONP. O script que você incluiu adiciona outro script com os parâmetros no querystring. O servidor retorna o JSON (que é apenas JavaScript) e os dados são extraídos.

Se você está construindo mashups, deve confiar que esses widgets não farão algo malicioso como roubar seus cookies. Haverá um melhor suporte para XSS seguro no IE 8.

Outras dicas

Você nem precisa usar o JSON para isso.

Você pode recuperar o código JavaScript de qualquer domínio usando uma tag de script, então muitos desses widgets apenas criam um nó de script, e a resposta é formatada como:

someFunction("Callback Data");

Alguma função já é uma função existente na fonte de widget original e despeja os dados em seu DOM.

A resposta é que os navegadores, por algum motivo, bloqueiam apenas o XMLHTTPRequests para servidores que não sejam o originário. Você é livre para usar u003CSCRIPT>-tags that has SRC pointing to wherever, and such script tags can of course be dynamically inserted into your DOM.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top