该应用程序在允许加载到 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 逻辑的评论吗) 2)如果这在 SAMEORIGIN 中有效(允许 iframe 在同一页面中加载,但不能在其他页面上加载)页)?
编辑:
我发现了另一种对我来说似乎很清楚的方法,但是,我不确定这是否比上面更安全:
<style>html { visibility : hidden }</style>
<script>
if (self == top ) {
document.documentElement.style.visibility = 'visible';
} else {
top.location = self.location;
}
</script>