我有一个小部件。我想只有几个网站通过iFrame嵌入我的小部件。
_________________
| Friend |
| __________ |
| | 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
时,您会收到权限被拒绝错误。黑客,朋友和小部件都有不同的域,因此这是一个跨站点脚本错误。
在你笑之前说“没有黑客会经历这样做的所有麻烦”,我想说我已经找到了人们这样做。有问题的小部件有敏感数据,我只能在法律允许的情况下在某些网站上显示。
答案 0 :(得分:3)
您必须要求您的朋友实施代码,以防止他的网站被用作iframe。
if(top != self){
alert('Hacker Attack');
}