如何禁止框架

时间:2010-12-12 00:57:16

标签: javascript html security iframe

我最近发现堆栈溢出“出于安全原因”does not allow framing.

1)这是怎么做到的? (不是特定情况!我的意思是技术/语言等,出于某种原因,我猜是js)

2)它实际上是避免它还是仅仅是警告(有点像客户端验证)

3)是否应该这样做或者是否有特定的理由这样做,并且在大多数情况下不是必要的(这是我第一次看到它)

提前致谢!!!

3 个答案:

答案 0 :(得分:9)

1)帧破坏始终在客户端上完成:由于服务器永远不会被告知要求在页面中使用页面,因此必须在客户端完成。最近的浏览器支持一个名为X-Frame-Options的特殊HTTP标头,以防止在框架中显示页面,但是对于删除框架或旧浏览器版本,您需要使用Javascript。 (感谢ide指出这个!)

2)假设您没有使用HTTP标头,那么如果关闭Javascript,那么框架将保留。没有办法解决这个问题,因为它必须在客户端发生。

3)几年前它实际上相当普遍,虽然现在看来大多数网站都停止使用它。您可能仍然使用它的一个原因是阻止clickjacking

现在,恰好frame busting can be busted,并且实际上有SO question关于如何破坏破坏框架的破坏者 - 所以目前正在使用这种反框架破坏。 / p>

(当然,可能会出现这种反框架破坏本身可能被破坏的情况,在这种情况下可能会有一种方法可以破坏反框架破坏的破坏者,我敢肯定你知道这是怎么回事。)

答案 1 :(得分:1)

请参阅有关框架断路器的帖子:http://www.codinghorror.com/blog/2009/06/we-done-been-framed.html

答案 2 :(得分:0)

你有没有尝试过:http://www.cryer.co.uk/resources/javascript/script1.htm我会假设SO正在使用javascript来完成它意味着它可以被没有启用javascript的用户绕过,或者可能在某些时候使用高级版本的html / javascript修改。我相信它完全是客户端。