Как виджеты Google+ +1 выходят из своего iframe? - PullRequest
145 голосов
/ 06 сентября 2011

Каким-то образом при наведении курсора на виджет Google+ плюс один может появиться предложение типа всплывающей подсказки, которое явно больше, чем элемент <iframe>, в котором он содержится. Я проверил DOM, чтобы подтвердить это. *

iframe boundaries

Итак:

  1. Что? Как!?

  2. Разве это не большая возможность для кражи кликов, если используется злонамеренно? (Представьте, что кто-то делает MITM для этих социальных виджетов!)

* Обновление: я увидел, что сообщение всплывающей подсказки было в секунду, динамически создано iframe.

Ответы [ 2 ]

181 голосов
/ 06 сентября 2011

Виджет Google +1 - JavaScript, который работает на вашем сайте , который создает iframe.Этот виджет JavaScript работает в контексте вашего веб-сайта и поэтому не ограничен Правилами наследования происхождения для iframes .Поэтому этот виджет JavaScript может устанавливать любые события DOM, которые он хочет на родительском сайте, даже если он выглядит просто iframe.

Другое дело, почему Google использует iframe?Почему бы просто не сгенерировать div на странице?Так как ссылка происходит из iframe, в запрос может быть встроен токен CSRF (подделка межсайтового запроса), и родительский сайт не может прочитать этот токен и подделать запрос.Таким образом, iframe - это мера против CSRF, основанная на правилах происхождения наследования, чтобы защитить себя от злонамеренного родителя.

С точки зрения атаки это больше похоже на XSS (межсайтовый скриптинг), чем на UI-Redress.Вы предоставляете Google доступ к своему веб-сайту, и они могут захватить файлы cookie ваших пользователей или выполнить XmlHttpRequests против вашего веб-сайта, если они того пожелают (но тогда люди будут судиться с ними за то, что они злонамеренные и богатые).

В этой ситуации вы ДОЛЖНЫ доверять Google, но Google не доверяет вам.

Существуют способы смягчения влияния этих веб-ошибок на конфиденциальность .

3 голосов
/ 06 сентября 2011

Google использует iFrames для предотвращения «утечек стандартных DIV». Их диалог закрытия библиотеки делает то же самое. Вероятно, просто так, что другой контент не может стечь в кнопку +1. http://closure -library.googlecode.com / SVN / багажник / закрытие / GOOG / демки / dialog.html .

...