簡體   English   中英

為什么iframe可以從其他域更改父窗口的URL?

[英]Why can an iframe change the parent window's URL from a different domain?

我有兩個域名:

sub1.domain.org包含一個iframe,其src指向另一個:sub2.domain.org

在sub2:

//triggers a cross-domain security error
alert(window.parent.location.href);

//executes just fine on FF, IE, Chrome, and Safari.
window.parent.location.href = new_url; 

所以看來我可以寫入父窗口的URL,但我不允許讀它。 這真的是標准嗎? 我只需要知道為什么這樣做。

我在這里找到了一個答案: 為什么孩子可以重定向父框架?

同源政策也不適用於此。 通過更改瀏覽器窗口中地址欄中的URL,您也可以更改window.top.location.href屬性。 如果那里存在同源限制,互聯網將會死亡。 您沒有向其他位置發送請求,您沒有從第三方資源獲取數據並將其加載到您的頁面中,而是將瀏覽器重定向到另一個位置,從而關閉並清除DOM。

但是這個答案提示了其他后續問題。

當我們更改父級的URL時,我們是否仍然在技術上修改父級的DOM(即使它關閉它),因此違反了同源策略?

如果在這里應用相同的原始政策,互聯網究竟會如何死? 當然,我們可以區分手動輸入地址欄中的URL,而不是通過不同域上的腳本進行更改。

我知道這個案子並沒有違反同源政策,但我仍然在努力弄清楚原因。 任何人都可以進一步了解為什么允許這樣做?

iframe更改父窗口的URL不是安全問題。 這只是將一個新頁面加載到父窗口中(從而殺死原始父級中包含的iframe)。 那里沒有安全問題。

來自不同來源的iframe(正如您所注意到的)不允許訪問父級的內容,因為這可能是安全問題。

僅供參考,反之亦然。 父框架可以創建iframe並將其.src設置為它想要的任何內容,包括其他域,但無法訪問加載的內容。 這里的核心問題是顯示來自其他域的內容不是安全問題,但訪問來自不同來源的實際內容可能是一個安全問題。 因此,您通常可以顯示您想要的任何內容,而不是訪問它。

僅供參考,通過重置父窗口源URL來檢測您是否被框架和“破壞”的能力被稱為“框架破壞”,並且它被視為內容提供商決定是否可以框架的權利是否或他們可以被誣陷。 現在有更新的控件指定網站是否可以框架,因此在較新的瀏覽器中不需要框架破壞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM