尽管在 Web.config 中设置了 X-Frame 选项,但在 global.asax 中抑制 anti-forgery X-Frame 选项 header 会削弱安全性?

Suppressing anti-forgery X-Frame options header in the global.asax weakens security despite setting X-Frame options in Web.config?

我们的 MVC5 应用程序包含一个部分视图,该视图使用 Master.cshtml 在所有页面上呈现 Html.AntiForgeryToken。

在我们呈现另一个表单和另一个 Html.AntiForgeryToken 的页面上,在提交表单时抛出异常:

Server cannot append header after HTTP headers have been sent.

为了避免异常,在Global.asax App_Start中我们可以指定:

AntiForgeryConfig.SuppressXFrameOptionsHeader = true;

我们在这里担心的是我们是否允许其他人将我们的网站嵌入为 iFrame,并启用 'ClickJacking'?

无论我们是否也使用 Umbraco 7.6.1,上述情况都会发生,这需要我们在 Web.config:

中指定
    <httpProtocol>
     <customHeaders>
      <remove name="X-Powered-By" />
      <add name="X-Frame-Options" value="SAMEORIGIN" />
     </customHeaders>
    </httpProtocol>

这种矛盾的配置有替代方案吗?我们是否正在削弱安全性?

通过从 Html.AntiForgeryToken 中抑制 X-Frame-Options header,您可能会承担应用 X-Frame-Options header.[=10= 的责任,从而削弱安全性]

在您的情况下,安全性并未减弱,因为您正在使用 Web.config 应用 X-Frame-Options header,其值与 Html.AntiForgeryToken 应用的值相同。您的安全性实际上比 Html.AntiForgeryToken 提供的更强大,因为 X-Frame-Options header 将应用于所有响应,包括您忽略或不能使用 Html.AntiForgeryToken 的表单。