我有一个嵌入到 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 会被破坏。
因此,关注的范围是:
- document.referrer 是否可以
null/unavailable/incorrect
在此设置中。我知道如果您例如通过重定向,它可能会有所不同,但鉴于我的脚本将创建 iframe 并设置 src,这种情况不应该成为问题。 - 鉴于我解析/存储 document.referrer,是否有其他对抗 iframe 可以通信/移动 iframe(混淆 window.parent 等)的奇怪技巧。