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都有不同的域,所以這是一個跨站點腳本錯誤。
在你笑着說「沒有黑客會經歷所有這些麻煩」之前,我想說我已經找到了這樣做的人。相關小部件具有敏感數據,我只能合法地在某些網站上顯示。