只允许一些网站嵌入我的iFrame

时间:2011-05-13 23:53:33

标签: javascript iframe

我有一个小部件。我想只有几个网站通过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时,您会收到权限被拒绝错误。黑客,朋友和小部件都有不同的域,因此这是一个跨站点脚本错误。

在你笑之前说“没有黑客会经历这样做的所有麻烦”,我想说我已经找到了人们这样做。有问题的小部件有敏感数据,我只能在法律允许的情况下在某些网站上显示。

1 个答案:

答案 0 :(得分:3)

您必须要求您的朋友实施代码,以防止他的网站被用作iframe。

if(top != self){
   alert('Hacker Attack');
}