Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iframe中实现Frame-Buster-Javascript_Javascript - Fatal编程技术网

如何在iframe中实现Frame-Buster-Javascript

如何在iframe中实现Frame-Buster-Javascript,javascript,Javascript,我看到这段代码可以帮助解决iframe中的点击劫持问题 <style> html { display : none; } </style> <script> if( self == top ) { document.documentElement.style.display = 'block'; } else { top.location = self.location ; } </script> html

我看到这段代码可以帮助解决iframe中的点击劫持问题

<style> 
  html { display : none; } 
</style>

<script>
  if( self == top ) {
    document.documentElement.style.display = 'block';
  } else {
    top.location = self.location ;
  }
</script>

html{显示:无;}
if(self==顶部){
document.documentElement.style.display='block';
}否则{
top.location=self.location;
}
我不明白它是如何解决问题的?为什么
self==top
会解决这个问题


我可以使用
ALLOW-FROM
header还是建议使用这两种方法

为了便于讨论,Mallary的页面是包含
元素的页面,Bob的页面是放在框架中的页面

我不明白它是如何解决问题的

如果Mallary不能将Jack Bob的页面保存在一个框架中,她就不能单击该页面

当然,这确实需要clickjack攻击完全依赖于运行JS的Bob页面,否则Mallary可能会
sandbox
it,因此其JavaScript不会运行

为什么
self==top
会解决这个问题

没有

top.location=self.location使浏览器离开Mallary的页面,并将Bob的页面加载到浏览器顶层的相应位置

self==top
停止浏览器从Bob的页面导航并在其位置加载Bob的页面:即,它防止无限循环的重新加载

我可以使用ALLOW-FROM标头还是建议同时使用这两种方法

X-Frame-Options
是阻止页面加载到框架中的一种更有效、破坏性更小的方法。是
X-Frame-Options
更灵活的替代品

我会使用它们,而不是像这样的JavaScript黑客