Google+ +1 widget'ları iframe'lerinden nasıl çıkıyor?


145

Her nasılsa, bir Google+ artı bir widget'ının üzerine gelmek, <iframe>içinde bulunduğu öğeden açıkça daha büyük olan araç ipucu türünde bir anlaşma sağlayabilir . Bunu doğrulamak için DOM'u inceledim. *

iframe sınırları

Yani:

  1. Ne? Nasıl!?

  2. Bu, kötü amaçla kullanılırsa, tıklama hırsızlığı için büyük bir fırsat değil mi? (Bu sosyal gereçler için MITM yapan birini hayal edin!)

* Güncelleme: Gördüğüm şey, tooltip-y mesajının bir saniyede dinamik olarak oluşturulmuş olduğuydu iframe.

Yanıtlar:


181

Google +1 widget'ı, web sitenizde çalışan ve bir iframe. Bu JavaScript pencere öğesi, web siteniz bağlamında çalışmaktadır ve bu nedenle iframe'ler için Kaynak Devralma Kuralları tarafından kısıtlanmamaktadır . Bu nedenle, bu JavaScript pencere öğesi, basit gibi görünse de, üst sitede istediği DOM olaylarını ayarlayabilir iframe.

Başka bir şey, Google neden bir kullanıyor iframe? Neden sadece divsayfada bir tane oluşturmuyorsunuz ? Bağlantının kaynağı olduğundan, iframeisteğe bir CSRF (siteler arası istek sahteciliği) belirteci yerleştirilebilir ve ana site bu belirteci okuyamaz ve isteği yerine getiremez. Dolayısıyla, iframekendini kötü niyetli bir ebeveynden korumak için Kaynak Devralma kurallarına dayanan bir CSRF karşıtı önlemdir.

Saldırı açısından bakıldığında bu, UI-Redress'ten çok XSS'ye (siteler arası komut dosyası oluşturma) benzer. Google'a web sitenize erişim izni veriyorsunuz ve isterlerse kullanıcılarınızın çerezlerini ele geçirebilir veya XmlHttpRequestsweb sitenize karşı performans sergileyebilirler (ancak daha sonra insanlar kötü niyetli ve zengin oldukları için dava açabilirler).

Bu durumda Google'a güvenmeniz GEREKİR, ancak Google size güvenmiyor.

Bu web hatalarının gizlilik etkisini azaltmanın yolları vardır .


Harika şeyler - Yorumunuz için minnettarım: XSS, bu çok mantıklı. Yine de bir şeyden emin değilim. Söz konusu içerik, içinde değil gibi görünüyor <iframe>, önerdiğiniz doğru olabilir (ve nasıl mümkün olduğunu açıklayın). Ancak, DOM'un incelenmesinden dolayı durum böyle görünmüyor. Ve bu, adımı ve Gmail adresimi kötü niyetli ebeveynlere ifşa eder (bir saniyeye sığmazsa iframe)!
Alan H.

3
@Alan H. Evet, dinamik iframe'lerle bazı tuhaf şeyler yapıyorlar. + 1'e tıklarsanız, yorum eklediğiniz pencereyi görürsünüz. Firebug'ı yükler ve bu öğeyi incelerseniz, plusone.google.com/u/0 / _ / + / fastbutton? Url = ... için bir iframe src alırsınız. Bu iframe, google + 'ya göndermek için CSRF jetonunu içerir.
kale

Bazı durumlarda, Cookie'nin ele geçirilmesini, bunlarıhttponly ile ayarlayarak önleyebilirsiniz.
seppo0010

1
@ seppo0010 evet ama bu XHR'leri durdurmuyor.
kale

3

Google, "sızdıran standart DIV'leri" önlemek için iFrame'leri kullanır. Kapanış kitaplığı diyalogları da aynı şeyi yapar. Muhtemelen sadece diğer içeriğin +1 düğmesine sızamaması içindir. http://closure-library.googlecode.com/svn/trunk/closure/goog/demos/dialog.html .


Rook'un cevabında açıkladığı gibi <iframe>, Google +1 widget kodunu kullanan sitenin CSRF saldırısını kullanarak bağlantıyı tek başına tıklamasını (ve sitenin +1 puanını yapay olarak iyileştirmesini) önlemek için kullanılır. Google'ın size güvenmediği kısım budur.
Mikko Rantalainen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.