BUG处理-frame-ancestors“无效”?

199 阅读1分钟

问题

在使用iframe进行嵌入时,一般会设置响应头frame-ancestors作为安全防护,但是实际生产工作中遇到很多问题,下面提供类似的解决方案

问题1

响应头IP泄露

这部分内容大多出现在内网应用+互联网应用双端应用。 一般我们设置响应头会使用frame-ancestors: ALLOW-FROM *.abc.com 1.2.3.4 5.6.7.8这类写法 但是此部分会出现暴露内网IP的问题,一般会被安全管理部门指出存在内网IP泄露 因此我们改换形式:

  1. 从请求头中的Referer进行解析,如果Referer中地址为白名单范围内,则添加响应头frame-ancestors,否则直接返回403禁止访问
  2. 原则上禁止无Referer访问

问题2

多层iframe嵌套

在多层iframe嵌套时,实测浏览器会校验每一个上级iframeCSP是否合规 例如页面是a.com,其中嵌套了b.com,我们自己的页面c.comb.com嵌套进去,那我们设置的frame-ancestors: ALLOW-FROM 必须同时包含a.com b.com,这种问题再应对问题1时会变得尤为困难,因为浏览器实际没有通过Referer带给我们最外层页面的地址,我们无法进行校验。

因此只能做关联绑定,如果Refererb.com,那我需要同时设置两个地址