0

我正在创建一些 IFrameable 内容。我们希望用户能够 IFrame 这个页面,但只能从一组域列表中。

有什么我们可以检查的,看看父页面的域名是什么?

if (top != self) { top.location.replace(self.location.href); }
4

3 回答 3

2

不,location如果该页面不在您的安全上下文中(同源策略),则父页面的 不可见。您当然可以查看document.referrer自己的框架,但这并不完全防水......客户端的引荐来源检查比服务器端的用处要小一些,但它仍然可以通过类似的东西来规避帧中的刷新转发器。

内容安全策略中的frame-ancestors限制可能有一天会允许这样做。

于 2009-12-03T03:03:06.550 回答
2

正如 bobince 所说,document.referrer看起来是你最好的选择。您将在 iFrame 的 src 页面中检查这一点。但是,HTTP 引用信息很容易被欺骗,因此这种方法不是很安全。

本文展示了如何使用 PHP:如何绕过 REFERER 安全检查

于 2009-12-03T04:42:44.373 回答
1

我正在使用它来检查页面是否从白名单域加载。我敢肯定有办法解决这个问题,但它似乎有效。

var currentUrl = document.referrer;
var okayUrl = "http://good-domain.com";
var okayUrl2 = "http://another-good-domain.com";

//check if page is loaded in iframe
if ( window.location !== window.parent.location ) {
    //check if parent is a whitelisted domain
    if (currentUrl == okayUrl || currentUrl == okayUrl2)
    {
     //if it is a good domain, then just log the parent url or something
     console.log(currentUrl);
     } else {
     //if it is a bad domain, then do something about it
     alert ("Woah buddy. Can't touch this!");
     window.location = "http://en.wikipedia.org/wiki/Rickrolling";
   }
}
于 2015-05-15T19:31:42.797 回答