可以阻止我们的网站在另一个域的框架集或IFrame中运行?

时间:2009-01-20 01:15:42

标签: javascript dns frame frameset-iframe

我们最近遇到了一个问题,其他网站在我们的网站集中运行我们的电子商务网站,我们的网站(其中包含违规者联盟ID)是单个全宽框架中的唯一内容。所以基本上它看起来和感觉就像我们的网站顶部的URL。我们可以切断他们的会员身份,这会使他们没有意义,但这并不妨碍未来的犯罪者在我们发现它之前做同样的事情。

是否存在通用方式(通过每个页面上可能出现的JavaScript?)来防止这种情况发生?请注意,向所有链接添加目标是不可行的,但是向所有页面添加JS片段是因为页眉和页脚部分是从单个源共享的。

另一种可能性是在Apache级别(如果有任何我们可以做的服务器端),因为我们通过mod-rewrite传递所有请求。

请注意,如果父网页来自我们的网域,那么必须允许页面加载到IFrame中,因为我们有效地使用了IFrame

4 个答案:

答案 0 :(得分:5)

我听说过这个问题的解决方案被称为“框架弹出脚本”。一个快速的谷歌提出了this thread。看起来这是最简单的一个:

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

答案 1 :(得分:4)

我认为实现这一目标的正确现代方法是使用The X-Frame-Options response header

来自MDN:

  

X-Frame-Options HTTP响应标头可用于指示是否允许浏览器在框架或iframe中呈现页面。通过确保其内容未嵌入其他网站,网站可以使用此功能来避免点击劫持攻击。

看看:How to prevent IFRAME from redirecting top-level window

答案 2 :(得分:2)

看看这篇文章。它为检测帧和突破帧提供了一个相当简单的解决方案。

How to Break Out of Frames with JavaScript

此外,我会更进一步。每当您检测到一个帧时,请获取有问题的站点成帧器的联属会员ID,然后使用AJAX以及他们使用的URL将其推送到服务器。然后,无论是自动还是手动,您都可以验证他们是否正在构建您的网站,并一次取消一个联盟代码。

答案 3 :(得分:0)

在这里猜测......但是如果你使用javascript调用你的父窗口来访问它的文档对象呢?您可以检查它是否为空,如果有一个父窗口(意味着一个框架加载了您的网站),您可以通过javascript隐藏所有的HTML ...