2010-09-19 31 views
4

我有一個網站在我自己的域名,我包括其他域名的iframe到快速預覽的目的。阻止從設置parent.location的iframe(防止framebusting)

問題是,有些網站有框架代碼重定向用戶從我的網站。

我該如何解決這個問題。即使根本沒有顯示iframe,也會比在重新定向的情況下更好。

不應該這個重定向被同一網站來源保護btw阻止?


更新

好了,這似乎是不可能的,以防止它,但它可能只是不顯示的幀都代替。

我嘗試了一個雙框架aproach:A和B在我的網站上,B包含C,當B獲取window.onbeforeunload時,它向A發送消息以刪除B.這不起作用,一直訪問頂層窗口,而不僅僅是父窗口。

window.onbeforeunload工作阻止重定向btw但你必須顯示一個對話框。

+0

+1有趣的問題 – quantumSoup 2010-09-19 18:08:24

回答

6

這是無法完成的,因爲如果違反同源策略,則無法訪問iframe中頁面的DOM。

只是不這樣做。如果人們有龐大的代碼,他們顯然不希望他們的頁面在框架中。尊重這一點。

0

我該如何解決這個問題。

你不行。如果可以的話,它將首先破壞破解代碼的目的。

不應該這個重定向被同一網站來源保護btw阻止?

這隻會保護您訪問/修改頁面的DOM(即document對象)。幀破壞代碼僅使用window對象來檢測幀並將其重定向到另一個頁面。

0

這是一個貓捉老鼠的遊戲,但瘋狂的可以被擊敗。

據 斯坦福大學和卡內基梅隆 大學的研究人員(PDF),幀清除功能不可 防止 點擊劫持如希望的那樣有效。根據排名Alexa 的排名前500位的網站的分析發現,所有的框架都可以被繞開。 一些規避是針對瀏覽器的 ,而其他人則在所有瀏覽器上工作 ,研究人員發現 。

原文eweek;
研究論文來自Stanford (PDF)

0

如果你想要的只是網站的預覽,那裏有一些服務可以做到這一點。我沒有使用任何,但快速谷歌搜索發現這一個

http://www.thumbshots.com/

1

如何在彈出的運行測試?給它20秒,如果你仍然控制彈出框(即框架沒有改變document.url),然後加載到一個新的框架(?)並顯示給用戶。否則,根本不顯示幀。這不是萬無一失,但可以工作。