防止点击劫持的最佳实践:如果 javascript 被禁用怎么办?

Best practice click jacking prevention: What if javascript is disabled?

我目前正在研究保护网站免受点击劫持。 German Wikipedia 给出了以下最佳实践 示例:

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

但是,我想知道,如果客户端禁用了 javascript 怎么办?然后,他将不会显示该页面。我们需要发布功能齐全的 none-javascript 版本的应用程序。

有什么建议可以实现吗?

您可以使用

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

在导航尝试被成功攻击的情况下仍然隐藏页面。您也可以改为显示 self.location.href + " cannot be displayed in a frame." 行的消息。

当然,这不会阻止您的页面在禁用 JavaScript 时显示在框架中(甚至可能不是全局的,而只是在您的框架中),因此您应该始终发送相应的 X-Frame-Options header 旁边.