0

我有一个嵌入到 3rd 方站点的 iframe,我希望这些站点能够通过postMessage. 我想将可以与 iframe 通信的来源限制为原始(实例化)网页的来源。我目前通过将原点附加到 iframe 来实现这一点:

<iframe src = "https://whatever.com/iframe?host=${window.location.href}" />

但是,出于超出此问题范围的原因,我想放弃这种方法。因此,我正在考虑通过window.parent和的组合来验证消息ducument.referrer。就像是:

const originatingOrigin = parse(document.referrer).origin;

document.addEventListener("message", function (message)
{
    if (message.origin !== originatingOrigin || window.parent !== message.source)
        return;
});

这 1) 是否像我自己传递 URL 时一样安全 2) 万无一失,因为没有任何情况下 document.referrer 被阻止,比如说,在这种情况下 API 会被破坏。

因此,关注的范围是:

  1. document.referrer 是否可以null/unavailable/incorrect此设置中。我知道如果您例如通过重定向,它可能会有所不同,但鉴于我的脚本将创建 iframe 并设置 src,这种情况不应该成为问题。
  2. 鉴于我解析/存储 document.referrer,是否有其他对抗 iframe 可以通信/移动 iframe(混淆 window.parent 等)的奇怪技巧。
4

1 回答 1

0

似乎设置 Referrer-Policy: no-referrer 会使 document.referrer 不起作用。

于 2018-05-14T14:43:31.290 回答