为postMessage通信建立父源

时间:2018-05-13 17:38:51

标签: javascript security cross-domain postmessage

我有一个嵌入第三方网站的iframe,我希望这些网站能够通过postMessage与所述iframe进行通信。我想将与iframe通信的原点限制为原始(实例化)网页的来源。我目前通过将原点附加到iframe来实现这一目标:

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

但是,由于超出此问题范围的原因,我不想放弃此方法。因此,我正在考虑通过window.parentducument.referrer的组合验证消息。类似的东西:

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

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

这1)是否像我在自己传递URL时一样安全; 2)万无一失,因为没有文件阻止文件被阻止时让我们说,在这种情况下,API会被破坏。

因此,关注的范围是:

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

1 个答案:

答案 0 :(得分:0)

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