有什么原因为什么我不应该在2016年后的现代浏览器中使用window.postMessage API?

遥远空间

我发现有关window.postMessage和iframe,跨域iframe通信的很多内容似乎都过时了。

对于> = IE9 ..的现代浏览器,似乎香草js window.postMessage就足够了。与使用更大的软件包(如easyXDM或其他)相对。

http://caniuse.com/#search=postMessage

我想念什么?

奥马尔姆

主要是安全问题:

任何窗口(包括例如http://evil.example.com)都可以将消息发送到任何其他窗口,并且您不能保证未知发件人不会发送恶意消息。但是,在验证了身份之后,您仍然应该始终验证接收到的消息的语法。否则,您信任的仅发送受信任邮件的站点中的安全漏洞可能会在您的站点中打开跨站点脚本漏洞。

接下来,如果您使用postMessage发送邮件,那么您就可以打开被恶意站点拦截的数据:

恶意站点可以在您不知情的情况下更改窗口的位置,因此它可以拦截使用postMessage发送的数据。

此外,transfer参数虽然是可选的,但并不是所有浏览器的标准配置:

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

链接到MDN文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用postMessage API发送javascript对象

来自分类Dev

带有chat.postMessage的图像附件-Slack API

来自分类Dev

找不到松弛的Web API返回通道chat.postMessage到私有通道

来自分类Dev

使用react-player API导致无法在控制台中的“ DOMWindow”上执行“ postMessage”错误?

来自分类Dev

IE9的dailymotion API postMessage错误

来自分类Dev

setTimeout(0)vs window.postMessage vs MessagePort.postMessage

来自分类Dev

setTimeout(0)vs window.postMessage vs MessagePort.postMessage

来自分类Dev

模态加载后,iFrame postMessage

来自分类Dev

使用PostMessage发送Unicode字符

来自分类Dev

使用postMessage扩展背景页面

来自分类Dev

使用PostMessage发送Unicode字符

来自分类Dev

是否有任何原因为什么我应该/不应该在我的RESTful网址中使用ObjectId

来自分类Dev

为什么MessagePort.postMessage使Firefox崩溃?

来自分类Dev

YouTube iFrame Player API无法在DOMWindow上执行postMessage

来自分类Dev

YouTube iFrame Player API无法在DOMWindow上执行postMessage

来自分类Dev

window.postMessage与Ajax的优缺点

来自分类Dev

为什么JavaScript“ window.postMessage”创建重复的消息?

来自分类Dev

带有回调的本机消息postMessage

来自分类Dev

如何使用postMessage发送跨域数据?

来自分类Dev

如何使用postMessage集中YouTube iframe的控件

来自分类Dev

如何使用postMessage发送跨域数据?

来自分类Dev

使用postMessage进行iframe之间的通信

来自分类Dev

使用 PostClick 和 PostMessage 的 AHK 脚本

来自分类Dev

为什么我不应该使用catch()处理React useEffect API调用中的错误?

来自分类Dev

使用可转移对象调用postMessage时,MessageChannel port.postMessage的数据为null吗?

来自分类Dev

使用“ navigator.serviceWorker.controller.postMessage”,它将始终“ TypeError:无法读取null的属性'postMessage'”

来自分类Dev

使用可转移对象调用postMessage时,MessageChannel port.postMessage的数据为null吗?

来自分类Dev

为什么Control.Invoke()调用PostMessage()而不是SendMessage()?

来自分类Dev

为什么我不应该在模拟中使用存根?

Related 相关文章

  1. 1

    如何使用postMessage API发送javascript对象

  2. 2

    带有chat.postMessage的图像附件-Slack API

  3. 3

    找不到松弛的Web API返回通道chat.postMessage到私有通道

  4. 4

    使用react-player API导致无法在控制台中的“ DOMWindow”上执行“ postMessage”错误?

  5. 5

    IE9的dailymotion API postMessage错误

  6. 6

    setTimeout(0)vs window.postMessage vs MessagePort.postMessage

  7. 7

    setTimeout(0)vs window.postMessage vs MessagePort.postMessage

  8. 8

    模态加载后,iFrame postMessage

  9. 9

    使用PostMessage发送Unicode字符

  10. 10

    使用postMessage扩展背景页面

  11. 11

    使用PostMessage发送Unicode字符

  12. 12

    是否有任何原因为什么我应该/不应该在我的RESTful网址中使用ObjectId

  13. 13

    为什么MessagePort.postMessage使Firefox崩溃?

  14. 14

    YouTube iFrame Player API无法在DOMWindow上执行postMessage

  15. 15

    YouTube iFrame Player API无法在DOMWindow上执行postMessage

  16. 16

    window.postMessage与Ajax的优缺点

  17. 17

    为什么JavaScript“ window.postMessage”创建重复的消息?

  18. 18

    带有回调的本机消息postMessage

  19. 19

    如何使用postMessage发送跨域数据?

  20. 20

    如何使用postMessage集中YouTube iframe的控件

  21. 21

    如何使用postMessage发送跨域数据?

  22. 22

    使用postMessage进行iframe之间的通信

  23. 23

    使用 PostClick 和 PostMessage 的 AHK 脚本

  24. 24

    为什么我不应该使用catch()处理React useEffect API调用中的错误?

  25. 25

    使用可转移对象调用postMessage时,MessageChannel port.postMessage的数据为null吗?

  26. 26

    使用“ navigator.serviceWorker.controller.postMessage”,它将始终“ TypeError:无法读取null的属性'postMessage'”

  27. 27

    使用可转移对象调用postMessage时,MessageChannel port.postMessage的数据为null吗?

  28. 28

    为什么Control.Invoke()调用PostMessage()而不是SendMessage()?

  29. 29

    为什么我不应该在模拟中使用存根?

热门标签

归档