首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在postMessage中使用window.origin安全吗?

在postMessage中使用window.origin安全吗?
EN

Stack Overflow用户
提问于 2020-09-30 05:40:22
回答 1查看 430关注 0票数 2

在使用postMessage时,重要的是定义一个targetOrigin,以确保我们不会将数据泄露给其他站点。

同样重要的是,在收到消息时检查来源,以防止其他站点触发我们的脚本。

但是,如果我们只是希望在我们自己的域上这样做,那么使用:

代码语言:javascript
复制
targetWindow.postMessage({message}, window.origin);

--

代码语言:javascript
复制
window.addEventListener("message", e => {
  if (e.origin == window.origin){
    //Trigger something
  }
});
EN

回答 1

Stack Overflow用户

发布于 2020-09-30 15:59:13

我不是安全专家,但是MDN recommends to check消息的origin &可能是source属性。所以,检查它是正确的&我们可以认为它是安全的。

现在,问题开始出现了:

根据窗口的origin检查消息的origin有多安全?

首先,考虑有两种方法可以检查窗口的origin。您尝试使用的是WindowOrWorkerGlobalScope.origin,另一个是window.location.origin

我不会使用WindowOrWorkerGlobalScope.origin,因为它可以在客户端被覆盖。试试看:

代码语言:javascript
复制
window.origin = 'https://www.example.com';
console.log(window.origin === 'https://www.example.com');

我不认为这是一个直接的安全威胁(尽管我不是上面提到的安全专家),但在某些情况下,它可以很容易地执行一次成功的攻击。

作为额外的好处,它有更广泛的浏览器支持。

因此,我将使用window.location.origin或硬编码网址,如MDN所示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64128018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档