因此,我知道,如果我将iframe包含在不在同一域上的页面上,我将无法通过浏览器策略访问该iframe的DOM,但是在iframe中的页面可以执行任何类型的父级文档访问吗?

具体而言,我必须考虑到这个问题的想法:

  1. 如果嵌入式页面可以说明它不是父窗口,则可以制作一个不可用的站点,以便如果页面检测到它是iFrameD的,则它会更改为“ go awaw away”页面,否则您只能制作它-iframe-able(类似于仅包含的页面的服务器端脚本),因此,在不iframed时到达页面时会获得“走开”页面。

  2. 如果iframed页面具有某些自由,则可以要求请求父窗口的样式表并将其设置为在样式表上,从而使该站点与父文档更加集成。 (当然,那么我可以使我的样式表与iframed网站更多地联系在一起,知道它会这样做,但我认为这是一个问题)。

有人知道吗?

有帮助吗?

解决方案

关于#1,是的,您可以告诉您是否使用一些简单的JavaScript构图:

<script type="text/javascript">
if (self != top)
{
  // Framed!
}
</script>

关于#2,我不确定使用“顶部”变量可以做什么,但我确实知道您可以更改其位置(因此,如果您的网站由另一个站点构建,则可以使您的框架更改位置顶框架 - 本质上将用户直接重定向到您的站点)。

不确定您还能或不能对顶框架做什么 - 其他人可能能够在那里提供更多信息。

其他提示

你也可能对此有兴趣 这篇编码恐怖文章 关于检测帧。您可以检测到您是否被构图,但是也可以使用“父”页面来防止您对此采取行动。文章中的示例:

检测您是否被构架:

if (parent.frames.length > 0) {
    top.location.replace(document.location);
}

防止框架检测和重定向:

   var prevent_bust = 0  
   window.onbeforeunload = function() { prevent_bust++ }  
   setInterval(function() {  
     if (prevent_bust > 0) {  
       prevent_bust -= 2  
       window.top.location = 'http://server-which-responds-with-204.com'  
     }  
   }, 1)  

通过嵌入页面中的JavaScript可以通过:

if(top.location.href != self.location){
//do redirection or display message
}

您可以将此JavaScript作为站点模板的一部分,并防止在Iframe中显示任何页面

我以前做过,它已经奏效了:

<script type="text/javascript">
if (window.parent != null)
{
  // Framed!
}
</script>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top