如果我創建一個小部件並將其嵌入到來自不同域的站點的中,那麼小部件可以讀取有關父頁面的多少數據?iframe從其父窗口讀取多少數據?
顯然沒有訪問DOM,但有其他資料的任何訪問,如父頁面是否有父母,或者是什麼父頁面的網址是什麼?
如果我創建一個小部件並將其嵌入到來自不同域的站點的中,那麼小部件可以讀取有關父頁面的多少數據?iframe從其父窗口讀取多少數據?
顯然沒有訪問DOM,但有其他資料的任何訪問,如父頁面是否有父母,或者是什麼父頁面的網址是什麼?
我做了一點谷歌搜索,並且事實證明,通常你不能,如果內容是另一個域(同源策略)訪問iframe的內部膽量,但有一個article here它可以給你一些解決方法。
通常一個iframe的內容從不同的域提供不能訪問父以任何方式。這就像在不同的瀏覽器選項卡中加載頁面一樣。
然而,即使從不同的域提供服務,有可能的中間人攻擊它西港島線允許訪問父DOM。這是很容易,它的聲音 - 任何人誰擁有一個公共的WiFi接入點的管理控制可以進行這種攻擊(認爲星巴克,酒店,機場)
它可以防止使用HTML5的iframe沙盒這種攻擊屬性 - 見下文。
的中間人攻擊的工作原理如下。假設你的頁面加載關閉http://yoursite.com和IFRAME去http://badsite.org
這是需要一箇中間人攻擊的步驟。攻擊者必須能夠在用戶和yoursite.com之間獲取,或者控制DNS查詢的答案。我們的目標是從攻擊者的網站提供http://yoursite.com/badpage的內容,而不是您的實際網站。
攻擊者就可以成爲他們從(假冒)http://yoursite.org/badpage喜歡的任何惡意代碼。因爲它與主頁面位於同一個域中,所以它可以訪問父DOM。
HTML5的iframe的沙箱屬性似乎是避免這種情況的方式。您可以閱讀spec,但最好的描述可能是here。
這似乎支持Chrome,IE10,FireFox, Safari。
細則中指出,如果「允許-同源」屬性不集「的內容作爲從一個獨特的起源正在接受治療。」無論瀏覽器認爲URL是什麼,這應該會阻止您的子級iframe訪問父級DOM的任何部分。
沙盒,您還可以禁用腳本,彈出窗口,以更改頂層URL的能力,和其他的東西。