如何通过ASP.NET c#中的点击劫持来防止我们的网站?

如何通过ASP.NET c#中的点击劫持来防止我们的网站?,c#,asp.net,clickjacking,C#,Asp.net,Clickjacking,我有一个动态的网站,在其中我必须使点击劫持攻击的安全。在数据库中,在搜索时获取这些类型的值,我对点击劫持知之甚少,但确切地说,这是没有得到的,所以请任何知道的人帮助我 试试看 防止点击劫持的一种方法是在每个不应该被框架化的页面中包含一个“框架破坏器”脚本。以下方法将防止网页即使在不支持X-Frame-Options-Header的传统浏览器中也被框架化 在“文档头”元素中,添加以下内容: 首先将ID应用于样式元素本身: <style id="antiClickjack">body{d

我有一个动态的网站,在其中我必须使点击劫持攻击的安全。在数据库中,在搜索时获取这些类型的值,我对点击劫持知之甚少,但确切地说,这是没有得到的,所以请任何知道的人帮助我

试试看

防止点击劫持的一种方法是在每个不应该被框架化的页面中包含一个“框架破坏器”脚本。以下方法将防止网页即使在不支持X-Frame-Options-Header的传统浏览器中也被框架化

在“文档头”元素中,添加以下内容:

首先将ID应用于样式元素本身:

<style id="antiClickjack">body{display:none !important;}</style>
body{display:none!重要;}
然后在脚本中立即按其ID删除该样式:

<script type="text/javascript">
   if (self === top) {
       var antiClickjack = document.getElementById("antiClickjack");
       antiClickjack.parentNode.removeChild(antiClickjack);
   } else {
       top.location = self.location;
   }
</script>

如果(自我===顶部){
var antiClickjack=document.getElementById(“antiClickjack”);
antiClickjack.parentNode.removeChild(antiClickjack);
}否则{
top.location=self.location;
}

X-FRAME-Options

在global.asax文件中添加此代码

protected void Application_BeginRequest(object sender, EventArgs e)
{
  HttpContext.Current.Response.AddHeader("x-frame-options", "DENY");
}

只需将其添加到Web.Config文件中的

<!--Clickjacking security-->
    <httpProtocol>
      <customHeaders>
        <add name="X-Frame-Options" value="DENY" />
      </customHeaders>
    </httpProtocol>
    <!--End clickjacking-->

这个小片段在http响应中添加了一个名为x-frame-options的http头,并防止在“现代”浏览器中的iframe中加载站点。
X-Frame-Options有3个可能的值:

  • 拒绝:不允许任何网站为您的应用程序设置框架
  • SAMEORIGIN:仅允许对同一应用程序站点进行帧处理
  • 允许-来自:仅允许特定域对应用程序进行框架设置

  • Thomas是防止点击劫持攻击的唯一方法。只需添加全局asax文件和代码。您也可以将X-Frame-option添加到Web.config中,或使用Musakkhir建议的方式。最好的选项肯定是在配置中(y)X-Frame-options已被弃用,应替换为内容安全策略()。DENY在大多数浏览器中似乎仍然可以正常工作,但ALLOW-FROM存在问题。@hotn您能提供有关Deprection的文档吗?MDN和其他资源没有将此报告为已弃用。@Itanex由于我的评论是在一年前发表的,我记不起我在哪里读到过。然而,我现在发现了一些关于x-frame-options的冲突信息。OWASP有文档声称其不赞成(),而这个答案意味着MDN文档自我评论()以来已经发生了变化。@HotN感谢链接,这就澄清了这一点。我想我必须向我的安全团队展示这一点,因为他们对我的代码进行了窃听,因为我没有实现这一点。:)