乌云白帽大会笔记

发信息“postMessage”方法

otherWindow.postMessage(message, targetOrigin);

otherWindow:指目标窗口,也就是给哪个window发信息,是window.frames 属性
window.open 方法创建的窗口

PostMessage
需要特别严谨验证:输入,origin
如:验证domain 是不是等于 “http://xxxxx.com”的 -》

popUp = window.open(domain+'其他路径',‘myWindow’); popUp.postMessage(message.domain);

然后建立监听事件:

 window.addEventListener('xxx', function(event){
    if(event.origin !== domain) return;
    ......
},false)

https的站不建议使用onmessage
不要相信任何人给发的链接

接受信息的 onmessage 事件

data: 信息
origin: 信息来源地址
source: 源DOMWindow 对象

var onmessage = function (event) {
    var data = event.data;
    var origin = event.origin;
}
 if (typeof window.addEventListener != 'undefined') {
    window.addEventListener('message', onmessage, false);
}else if (typeof window.attachEvent != 'undefined') {
    window.attachEvent('onmessage', onmessage);
}

空referer或JS的URL跳转漏洞会绕过白名单referer限制
window.open 到iframe里的时候,浏览器popup blocker不会提示
origin校验可能会不严谨:indexOf(“www.wooyun.org” ) !=-1
RegExp(“^http://www.wooyun.org$“) 这里的点可以表示任意字符

Ref:来自 乌云著名段子手—— 呆子不开口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值