我有一個https頁面(https://example.com/main.php),它具有帶非HTTPS源(http://example.com/inner.php)的iframe。這兩個文件都在同一臺服務器上 - 只有一個是使用https訪問的,另一個則不是。我需要的非HTTPS頁面可以使用下面的代碼的HTTPS main.php
網頁上執行JavaScript作爲parent.myfunction()
允許HTTP iFrame在HTTPS父框架上調用JavaScript
然而,當我嘗試,我得到了以下錯誤:
Unsafe JavaScript attempt to access frame with URL https://example.com/main.php from frame with url http://example.com/inner.php . Domains, protocols and ports must match.
我已經設置document.domain = 'example.com'
這兩個文件,我認爲這會解決它,但是,它不。有什麼辦法可以讓框架在父框架上執行javascripts,反之亦然?如果是這樣,這會對安全產生什麼影響? PS:對於那些建議在兩個頁面中只使用https或http的人,我正在研究這個問題。但是,由於iframe頁面中存在進程,由於服務器負載問題,這可能不是一個可行的選項。
您的示例不起作用:因爲_whole_域(包含所有現有和不存在的子域)屬於paypal,所以無法使用域「my.paypal.com」。所以我認爲這不是這個安全限制的原因。原因是一樣的,就好像你想在https站點上通過http加載任何內容一樣。 – rudi 2012-11-05 18:10:15
@魯道夫我不認爲你完全明白我說的話。攻擊者返回一個包含兩個*幀*的頁面。一個框架包含真正的https://paypal.com。另一個包含惡意的JavaScript。惡意JavaScript「是從paypal.com發送的」 - 但實際上,我攔截了請求並返回了我想要的任何內容(可能是因爲它不是安全的連接)。因此,兩個框架「通過同源檢查」,但結果是災難。 – Borealid 2012-11-05 20:25:24