【发布时间】: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