首页 > 解决方案 > 将可以 iframe 构建 asp.net mvc Web 应用程序的域列入白名单的正确且安全的方法是什么?

问题描述

我们有一个合作伙伴组织,我们希望能够在iframe. 我们希望继续阻止所有其他域iframes使用默认的 MVCsame-origin策略运行我们的应用程序。在 MVC5 应用程序中执行此操作的当前和安全方法是什么?

使用 a 似乎Content-Security-Policy是正确的方法,但我不清楚如何针对这个特定用例实现这一点。

标签: asp.netasp.net-mvciframecontent-security-policy

解决方案


  1. 在受保护的 Web 应用程序上,您应该发布一个 HTTP 标头:

    Content-Security-Policy frame-ancestors 'self' allowed-domain.com;

为此,您需要在文件[[Configuration]]部分启用 CSP,web.config并使用源定义列表定义指令列表:

<content-Security-Policy enabled="true">
  <frame-ancestors self="true"/>
    <add source="allowed-domain.com" />
  </frame-ancestors>
</content-Security-Policy>

如果您安装了NWebsec中间件,则可以使用NWebsec设置 CSP 标头。

  1. 您需要确保应用程序或 Web 服务器不发布X-Frame-OptionsHTTP 标头,因为所有浏览器都会忽略它以支持该frame-ancestors指令,但 Safari 不会。所以 Safari(至少 Safari 12)将跟随X-Frame-Options标题而不是Content-Security-Policy一个。

推荐阅读