2011-05-13 94 views
2

我有一個小部件。我只想要幾個網站通過iFrame嵌入我的小部件。只允許一些網站嵌入我的iFrame

_________________ 
| Friend   | 
| __________ | 
| | Widget | | 
| |_________| | 
|________________| 

「簡單!」,你說。只要把這個在你的widget代碼開頭:

if (!/^http:\/\/([a-z0-9]+\.)?friend\.com)/.test(document.referrer)) { 
    alert('hacker detected'); 
    return; 
} 

但這個代碼將失敗,如果一個黑客這樣做是爲了保護我們:

_____________________ 
| Hacker    | 
| _________________ | 
| | Friend   | | 
| | __________ | | 
| | | Widget | | | 
| | |_________| | | 
| |________________| | 
|____________________| 

通過巧妙的CSS,黑客可以砍下朋友的佈局並只顯示小部件。沒有人會懷疑任何一種黑客行爲正在發生。所以,你再說一遍,「易,讓我們做到這一點:」

if (!/^http:\/\/([a-z0-9]+\.)?friend\.com)/.test(top.location.href)) { 
    alert('hacker detected'); 
    return; 
} 

但是,這仍然無法正常工作。閱讀top.location.href時,您會獲得拒絕許可的權限。 Hacker,Friend和Widget都有不同的域,所以這是一個跨站點腳本錯誤。

在你笑着說「沒有黑客會經歷所有這些麻煩」之前,我想說我已經找到了這樣做的人。相關小部件具有敏感數據,我只能合法地在某些網站上顯示。

回答

3

你必須要求你的朋友實施代碼,以防止他的網站被用作iframe。

if(top != self){ 
    alert('Hacker Attack'); 
} 
相關問題