如何在iframe中实现Frame Buster Javascript

时间:2019-06-24 06:33:44

标签: javascript

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

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

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

我不知道它如何解决问题?为什么self == top将解决它?

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

1 个答案:

答案 0 :(得分:1)

为了便于讨论,Mallary的页面是包含<iframe>元素的页面,而Bob的页面是被放置在框架中的页面。

  

我不知道它如何解决问题?

如果无法将Bob的页面保留在框架中,那么她就无法对其进行点击。

当然,这确实要求clickjack攻击完全取决于Bob的页面上运行的JS,否则Mallary可以sandbox来使用它,因此它的JavaScript都不会运行。

  

为什么self == top将解决它?

不是。

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

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

  

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

X-Frame-Options是一种将页面停止加载到框架中的更有效且破坏性较小的方法。 A CSPX-Frame-Options的更灵活替代。

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