【问题标题】:x-frame-option SAMEORIGIN and clickjacking in ASP.NETx-frame-option SAMEORIGIN 和 ASP.NET 中的点击劫持
【发布时间】:2013-09-30 08:24:12
【问题描述】:

应用程序在允许加载到 iframe 时出现问题。我已经阅读了很多关于它的内容(以及点击劫持)。 由于需要将页面加载到具有相同来源的 iframe 中,因此我提出了以下解决方案:

将以下内容添加到 global.asax 文件中

HttpContext.Current.Response.AddHeader("x-frame-options", "SAMEORIGIN")

但是,我知道并非所有浏览器都支持此标头。所以,我想添加一些额外的 javascript 解决方案。由于我不是 javascript 专家,因此我找到了以下解决方案:

<script>    
    if (self == top) {        
        var theBody = document.getElementsByTagName('body')[0]        
        theBody.style.display = "block"        
    } else {        
        top.location = self.location        
    }    
</script>

我知道如果有人非常想要它,它可能会被阻止,但是,这会增加一些安全性。

我的问题是—— 1)我不明白这个javascript代码的逻辑(你能给一些关于hte逻辑的cmets) 2) 如果这在 SAMEORIGIN 中有效(允许 iframe 在同一页面中加载,但不能在其他页面上加载)?

编辑:

我发现了另一种对我来说似乎很清楚的方法,但是,我不确定这是否比上述更安全:

<style>html { visibility : hidden }</style>
<script>
    if (self == top ) {
        document.documentElement.style.visibility = 'visible';
    } else {
        top.location = self.location;
    }
</script>

【问题讨论】:

    标签: javascript asp.net security iframe clickjacking


    【解决方案1】:

    self 是当前页面,如果它等于最外面的框架页面top,那么逻辑是它不在框架中,所以一切正常。如果不是,它将最外层框架的位置设置为当前页面 (top.location = self.location;)。这被称为“frame buster”代码,但也有一些已发布的“frame buster buster”脚本破坏了阻止内容被框架化的尝试,因此请记住,您的 JavaScript 可能并不总是有效。

    x-frame-options 是要走的路,所以如果你添加了它,那么你应该在现代浏览器上是安全的,但你可以尝试this approach,如果网站试图停止你的框架破坏器,它将显示一条警告消息从工作中。

    【讨论】:

    • 我知道 x-frame-options。如果我想在同一页面内使用框架,这个“框架破坏者”代码是否会产生一些问题? (同源)?
    • @renathy 您可以添加逻辑以不破坏您自己的框架。您将能够从框架外部访问和检查变量,因为它是同一个来源。
    • 很抱歉,我不明白您的最后评论。我不需要访问或检查任何变量。我有退出的应用程序不是我写的。我只需要从我的评论中插入第二个代码块(包括 html { visibility : hidden })。我想知道这是否会产生任何问题(应用程序本身有 iframe 指向此应用程序中的表单 - 所以 x-frame-options 设置为 SAMEORIGIN,但如果没有造成任何损坏,也应该插入 js 代码) .
    • 如果 IFrame 在您的页面内,则取决于页面内容和框架页面的标题是否可以框架。如果上面的脚本在你的页面中,那么它不会影响它。
    • 从给定的代码中哪个代码更好 - 第一个或第二个(可见性)。对我来说,第二个代码似乎更难克服,因为页面将是不可见的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 2021-05-14
    • 1970-01-01
    • 2018-05-27
    • 2016-05-11
    • 1970-01-01
    相关资源
    最近更新 更多