文章不易,请关注公众号 毛毛虫的小小蜡笔,多多支持,谢谢。
概念
window.name
1、在一个窗口还没关闭之前,同一个窗口的所有页面都共享同一个window.name。
这个窗口可理解为chrome浏览器的一个tab标签页面。另外,从一个页面中跳转到另一个页面后,这些页面都共享同一个window.name。
2、每个页面都能读和写window.name。
这个可能就是安全问题的来源。
3、window.name在chrome上可存储小于等于2MB的数据。
postMessage
可以安全地实现的跨源通信。
语法:otherWindow.postMessage(message, targetOrigin, [transfer]);
事件:window.addEventListener("message", receiveMessage, false);
message的属性有:data, origin, source
安全问题比较
攻击者页面:A
受害者页面:B
window.name的问题
1、可通过在A中嵌入B,实现在A获取B的window.name的数据
2、如果B中存在eval执行window.name的代码,则存在xss安全问题,因为在1的基础上,A可修改window.name的数据,从而导致B出现xss问题
Demo
验证问题1
A页面地址:
http://localhost:3000/window....
B页面地址:
http://localhost:3001/window....
效果如下截图所示:
详情 请查看:毛毛虫的小小蜡笔
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。