Security 需要帮助了解CSP报告并设置正确的框架url吗

Security 需要帮助了解CSP报告并设置正确的框架url吗,security,iframe,outlook,http-headers,content-security-policy,Security,Iframe,Outlook,Http Headers,Content Security Policy,我正在尝试将我的web应用程序作为Office外接程序。外接程序包括使用iframe的我的应用程序,因此我需要调整我的应用程序的“内容安全策略”标题以使其正常工作 当前标题的值是内容安全策略:frame src'self';框住祖先的“自我”;对象src'none'。如果我将标题设置为内容安全策略:frame src'self'*;框架祖先的“自我”*;对象src'none'一切正常,但我不想让每个人都使用iframe包含我的应用程序 因此,我试图限制使用内容安全策略:frame src'sel

我正在尝试将我的web应用程序作为Office外接程序。外接程序包括使用iframe的我的应用程序,因此我需要调整我的应用程序的“内容安全策略”标题以使其正常工作

当前标题的值是
内容安全策略:frame src'self';框住祖先的“自我”;对象src'none'。如果我将标题设置为
内容安全策略:frame src'self'*;框架祖先的“自我”*;对象src'none'一切正常,但我不想让每个人都使用iframe包含我的应用程序

因此,我试图限制使用内容安全策略:frame src'self'https://outlook.live.com; 框住祖先的自我https://outlook.live.com ; 对象src'none'但这不起作用。Chrome的JS控制台显示:拒绝帧https://auth-recette-broc.kinexo.fr/'因为祖先违反了以下内容安全策略指令:“框架祖先'自我'https://outlook.live.com“

“顾客服务提供商报告”是:

{
  "document-uri": "https://auth-mywebsite.xx/",
  "referrer": "https://yy-mywebsite.xx/",
  "violated-directive": "frame-ancestors",
  "effective-directive": "frame-ancestors",
  "original-policy": "frame-src 'self'  https://outlook.live.com; frame-ancestors 'self' https://outlook.live.com ; object-src 'none';",
  "disposition": "report",
  "blocked-uri": "https://auth-mywebsite.xx/",
  "status-code": 0,
  "script-sample": ""
}
我不理解这个csp报告

  • 为什么父框架URI()的url不显示为
    文档URI
  • 文档uri
    阻止的uri
    属性相同并且允许
    self
    进行帧设置时,为什么拒绝帧设置
  • 如何知道作为框架祖先的预期url以允许框架
  • 为什么父框架URI()的url不显示为文档URI

    帧祖先指令是特殊的-它作用于父页面,而其他指令作用于页面本身(发布CSP)。
    因此,在
    帧祖先
    冲突的情况下,
    文档uri
    是的Url(它发布CSP)

    当文档uri和阻止的uri属性相同且允许self进行帧设置时,为什么拒绝帧

    阻止的uri
    如果是
    帧祖先
    则取决于浏览器:

    • Chrome显示为
      阻塞uri
      锁定容器(iframe)本身的uri
    • Firefox从顶级窗口获取
      阻塞的uri
      (但对于嵌套级别>1,Firefox有一个bug,并发送一个空的
      阻塞的uri
    因此,在Chrome中,
    阻塞的uri
    将等于
    文档uri

    据我所知,您有一个
    https://yy-mywebsite.xx
    嵌入
    https://auth-mywebsite.xx/

    https://auth-mywebsite.xx/
    页面发布CSP
    框架祖先“自我”;对象src'none'
    在这种情况下,
    'self'
    表示
    https://auth-mywebsite.xx/
    因此嵌入到
    https://yy-mywebsite.xx
    是不允许的。您必须至少有<代码>帧祖先的自我'https://yy-mywebsite.xx; 对象src'none'

    如何知道作为框架祖先的预期url以允许框架


    帧祖先
    指令检查所有祖先(父级的整个上游链),而不仅仅是最近的父级。因此,您必须指定允许嵌入iframe的所有主机。

    非常感谢您给出了准确的答案。实际上,我必须使用这个CSP值
    frame“self”https://yy-mywebsite.xxhttps://outlook.live.com; 对象src'none'使其工作。这是有道理的,但我没有抓住这一点