首页  >  问答  >  正文

关于html5 postMessage安全问题的疑问?

otherWindow.postMessage(message, targetOrigin, [transfer]);

对于第二个参数,mdn的解释是:

Specifies what the origin of otherWindow must be for the event to be
dispatched, either as the literal string "*" (indicating no
preference) or as a URI. If at the time the event is scheduled to be
dispatched the scheme, hostname, or port of otherWindow's document
does not match that provided in targetOrigin, the event will not be
dispatched; only if all three match will the event be dispatched.

我自己也测试了一下。大概就是说这个参数指定 目标窗口的源(scheme+host+port),如果目标窗口的源不符合要求,就不会被派发message事件。

我不明白做这件事有什么意义?otherwindow.postMessage不是已经指定了目标窗口吗,难道它的src有可能改变?

PHP中文网PHP中文网2762 天前726

全部回复(2)我来回复

  • 黄舟

    黄舟2017-04-17 11:46:49

    任何窗口的 url 都是可以改变的,那么不指定这个参数是有安全问题的。

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-17 11:46:49

    postMessage是可以跨窗口的,不一定是父窗口和iframe之间通信啊。
    所以,很可能另一个窗口已经跳到了另一个uri……,而otherWindow还是指向那个窗口

    回复
    0
  • 取消回复