0

我正在努力为我们的网站实施点击劫持预防。我首先添加了标题 X-Frame-Options :sameorigin。有了这个,我们的网站无法加载到任何其他网站托管的任何 iframe 中,因此 Clickjacking 部分工作正常。

现在的问题是,我们使用 iframe 加载托管支付网关形式的页面很少,该支付网关使用 iframeCommunicator Url 选项进行跨域通信。添加 X-Frame-Options 标头后,托管表单未与支付网关通信。

我在控制台中遇到以下错误:拒绝在框架中显示“ http://localhost:44352/examplesite/payment/iFrameCommunicator#action=resizeWindow&width=1106&height=152 ”,因为它将“X-Frame-Options”设置为“sameorigin” '。

上面的错误来自我在 webconfig 中设置的标题,如下所示

<httpProtocol>
  <customHeaders>
      <add name="X-FRAME-OPTIONS" value="SAMEORIGIN" />
  </customHeaders>
</httpProtocol>

我尝试过的其他设置:

<add name="X-Content-Security-Policy" value="frame-ancestors 'self' *.example.net*" /> 

<add name="Content-Security-Policy" value="frame-ancestors 'self' *.example.net*" />

其中.example.net是用于获取托管表单的支付网关 URL。

4

1 回答 1

0

考虑...

  • 您想拒绝您的网站被其他人 iframe,但允许iframe 提供您自己网站的内容:

    <add name="Content-Security-Policy" value="frame-ancestors 'self';" />

    这与旧的 X-Frame-Options 标头具有相同的效果:

    <add name="X-Frame-Options" value="sameorigin" />

  • 并且您希望允许包含支付网关页面的 iframe:

    <add name="Content-Security-Policy" value="frame-src *.example.net;" />

因此,您需要设置两个 HTTP 标头。请注意,HTTP 标头仅添加到您的页面,而不是支付提供商页面,它们由另一台服务器提供服务。

然而...

如前所述,这并不能解释为什么无法通过将 X-FRAME-OPTIONS 标头设置为允许同源来从 iframe 中的支付网关提供内容。

于 2018-08-20T11:50:49.817 回答