Як віджети Google+ +1 вириваються із рамки кадрів?


145

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

рамки рамки

Так:

  1. Що? Як !?

  2. Це не є масовою можливістю для джойкерів, якщо їх застосовують зловмисно? (Уявіть, що хтось робить MITM для цих соціальних віджетів!)

* Оновлення: те, що я побачив, - це те, що повідомлення підказки-у було секунди, створюється динамічно iframe.

Відповіді:


181

Віджет Google +1 - це JavaScript, який працює на вашому веб-сайті, на якому будується iframe. Цей віджет JavaScript працює в контексті вашого веб-сайту і тому не обмежений Правилами спадкування походження для кадрів . Тому цей віджет JavaScript може встановлювати будь-які події DOM, які він хоче на батьківському сайті, навіть якщо він здається простим iframe.

Інша справа, чому Google використовує iframe? Чому б просто не створити divна сторінці? Отже, оскільки посилання бере початок з iframeмаркера CSRF (підробка підписів між веб-сайтом), може бути вбудований у запит, і батьківський сайт не може прочитати цей маркер і підробити запит. Таким чином iframe, це анти-CSRF захід, який спирається на правила спадкування походження для захисту себе від зловмисного батька.

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

У цій ситуації ви НАДІЙТЕ довіряти Google, але Google вам не довіряє.

Існують способи пом’якшити вплив конфіденційності цих веб-помилок .


Чудові речі - Я вдячний за ваш коментар щодо: XSS, який має багато сенсу. Але я все ще не впевнений у чомусь. Поданий зміст виглядає так, що він не знаходиться в межах <iframe>, що, на вашу думку, може бути правдивим (і поясніть, як це можливо). Але, здається, це не так, з огляду ДОМ. І це могло б викрити моє ім’я та адресу Gmail злісним батькам (якщо не загорнути в секунду iframe)!
Алан Х.

3
@Alan H. Так, вони роблять деякі химерні речі з динамічними рамками кадрів. Якщо натиснути +1, ви отримаєте вікно, де ви додасте коментар. Якщо ви завантажите firebug і огляньте цей елемент, то ви отримаєте src iframe для plusone.google.com/u/0 / _ / + / fastbutton? Url = ... Цей iframe містить маркер CSRF для подання в google +.
грак

У деяких випадках ви можете уникнути викрадення Cookie, встановивши їх за допомогою httponly.
seppo0010

1
@ seppo0010 так, але це не зупиняє XHR.
грак

3

Google використовує iFrames для запобігання "витоку стандартних DIV". Діалогове вікно закриття бібліотеки робить те саме. Це, мабуть, просто так, що інший вміст не може кровоточити у кнопку +1. http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/dialog.html .


Як пояснив Рок у своїй відповіді, <iframe> використовується для запобігання сайту за допомогою коду віджетів Google +1 від використання CSRF-атаки для натискання на посилання самостійно (і штучно покращуючи +1 оцінку сайту). Це частина, коли Google не довіряє вам.
Мікко Ранталайнен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.