Làm cách nào để các tiện ích Google+ +1 thoát ra khỏi iframe của chúng?


145

Bằng cách nào đó, di chuột qua tiện ích Google+ plus-one có thể giới thiệu một thỏa thuận loại công cụ lớn hơn rõ ràng so với <iframe>yếu tố chứa trong đó. Tôi đã kiểm tra DOM để xác nhận điều này. *

ranh giới iframe

Vì thế:

  1. Gì? Làm sao!?

  2. Đây không phải là một cơ hội lớn cho nhấp chuột, nếu được sử dụng độc hại? (Hãy tưởng tượng ai đó đang làm MITM cho các vật dụng xã hội này!)

* Cập nhật: Những gì tôi thấy là thông báo tooltip-y trong một giây, được tạo động iframe.

Câu trả lời:


181

Tiện ích Google +1 là JavaScript chạy trên trang web của bạn đang xây dựng iframe. Tiện ích JavaScript này đang chạy trong ngữ cảnh của trang web của bạn và do đó không bị ràng buộc bởi Quy tắc kế thừa nguồn gốc cho iframe . Do đó, tiện ích JavaScript này có thể đặt bất kỳ sự kiện DOM nào mà nó muốn trên trang mẹ mặc dù có vẻ như nó chỉ đơn giản iframe.

Một điều nữa, tại sao Google sử dụng một iframe? Tại sao không chỉ tạo một divtrên trang? Vâng, vì liên kết bắt nguồn từ iframe, mã thông báo CSRF (giả mạo yêu cầu chéo trang web) có thể được nhúng trong yêu cầu và trang web mẹ không thể đọc mã thông báo này và giả mạo yêu cầu. Vì vậy, đây iframelà một biện pháp chống CSRF dựa trên các quy tắc Kế thừa nguồn gốc để bảo vệ chính nó khỏi cha mẹ độc hại.

Từ góc độ tấn công, nó giống như XSS (kịch bản chéo trang) hơn là UI-Redress. Bạn đang cấp cho Google quyền truy cập vào trang web của bạn và họ có thể chiếm quyền điều khiển cookie của người dùng hoặc thực hiện XmlHttpRequestsđối với trang web của bạn nếu họ chọn (nhưng sau đó mọi người sẽ kiện họ vì độc hại và giàu có).

Trong tình huống này, bạn phải tin tưởng Google, nhưng Google không tin tưởng bạn.

Có nhiều cách để giảm thiểu tác động của quyền riêng tư đối với các lỗi web này .


Công cụ tuyệt vời - Tôi đánh giá cao bình luận của bạn re: XSS, điều này rất có ý nghĩa. Tuy nhiên, tôi vẫn không chắc chắn về một cái gì đó. Nội dung trong câu hỏi có vẻ như không nằm trong nội dung <iframe>mà bạn đề xuất có thể đúng (và giải thích cách có thể). Nhưng có vẻ như đây không phải là trường hợp, từ việc kiểm tra DOM. Và nó sẽ tiết lộ tên và địa chỉ Gmail của tôi cho các bậc cha mẹ độc hại (trừ khi được gói trong một giây iframe)!
Alan H.

3
@Alan H. Vâng, họ đang làm một số thứ kỳ quái với iframe động. Bạn có nhấp vào +1 bạn sẽ nhận được cửa sổ nơi bạn thêm nhận xét. Nếu bạn tải lên fireorms và kiểm tra phần tử đó thì bạn sẽ nhận được iframe src cho plusone.google.com/u/0 / _ / + / fastbutton? Url = ... iframe này chứa mã thông báo CSRF để gửi tới google +.
rook

Trong một số trường hợp, bạn có thể tránh bị chiếm quyền điều khiển của Cookie bằng cách đặt chúng bằng httponly.
seppo0010

1
@ seppo0010 yeah nhưng điều đó không dừng XHR's.
rook

3

Google sử dụng iFrames để ngăn chặn "DIV tiêu chuẩn bị rò rỉ". Hộp thoại thư viện đóng cửa của họ làm điều tương tự. Có lẽ chỉ để các nội dung khác không thể chảy vào nút +1. http: // clenses-l Library.googlecode.com/svn/trunk/clenses/goog/demos/dialog.html .


Như Rook đã giải thích trong câu trả lời của mình, <iframe> được sử dụng để ngăn trang web sử dụng mã tiện ích Google +1 sử dụng tấn công CSRF để tự nhấp vào liên kết (và cải thiện xếp hạng +1 của trang web một cách giả tạo). Đó là phần mà Google không tin tưởng bạn.
Mikko Rantalainen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.