防止iframe窃取

时间:2011-04-02 08:25:40

标签: php javascript jquery html iframe

我认为有人在使用iframe窃取我的内容。我的网站是一个论坛,用户刚刚向我报告过。

如果他们是其他人这样做的话,我如何以编程方式(php,JavaScript,jQuery,HTML)找到他们的网站?

互联网上是否可以让他们这样做,我可以采取行动吗?

6 个答案:

答案 0 :(得分:25)

使用JavaScript可以做到

if(window.top==window){
 //not inside iframe
} else {
    if(parent.parent.someFunction){
       parent.parent.someFunction();
    } else {
       alert("framing is not allowed")
    }
}

OR

if (window.top !== window.self) window.top.location.replace(window.self.location.href);

一些现代浏览器也支持X-FRAME-OPTIONS标头,它可以有两个值:

* DENY – prevents the page from being rendered if it is contained in a frame
* SAMEORIGIN – same as above, unless the page belongs to the same domain as the top-level frameset holder.

支持标题的浏览器:

* IE8 and IE9
* Opera 10.50
* Safari 4
* Chrome 4.1.249.1042
* Firefox with NoScript

答案 1 :(得分:4)

如果你能找到它是谁,你可以告诉他们他们不能以这种方式使用你的内容。如果您拥有自己的网站,则可以决定如何使用它。

看看framkillers:http://en.wikipedia.org/wiki/Framekiller

这是一种阻止网站在iframe中展示的技巧。请记住,甚至可以杀死杀手。

答案 2 :(得分:3)

使用我在此处建议的相同方法:How to limit display of iframe from an external site to specific domains only

在一个坚果shell中,你在每个页面中添加一个PHP脚本(在你的情况下它可能只是一个,假设它是一个模板),这个脚本将查看限制在一个(或多个)的域名。

此方法优于javascript方法,因为用户可能已将其禁用。

答案 3 :(得分:1)

使用HTTP Referer过滤器可以在某种程度上阻止HTTP访问。还可以通过查看HTTP日志中的Referer来监视“通过主机服务器”访问。它不是一个完美的解决方案,但对于标准的浏览器访问,它将为您提供最大程度的解决方案。 (“No Hot-Linking”设置有时会像这样工作。)

要采取法律行动,请寻求律师的建议:-)然而,我的首先倾向于要求其他网站所有者停止。他们可能只是很好。

答案 4 :(得分:0)

您可以在网站顶部使用此js代码(标题页)

if (window.top !== window.self) window.top.location.replace(window.self.location.href);

答案 5 :(得分:0)

您可以防止其他网站使用内容安全策略标头(例如, frame-ancestors 'none';将阻止每个网站将您的内容嵌入其网站的iframe中 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors