Axi*_*rse 2 javascript xss iframe postmessage
我正在寻找一种方法将postMessage发送到兄弟iFrame,而不需要父页面中的任何javascript.我遇到的困难是尝试从第一个iFrame中获取另一个iFrame的窗口对象
该页面的布局如下:
html body (http://host.com/)
iFrame#a (http://me.com/a)
iFrame#b (http://me.com/b)
Run Code Online (Sandbox Code Playgroud)
从iFrame#a我想做的:
(iFrame#b window).postMessage(...)
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何iFrame#b从内部获取窗口对象iFrame#a.parent.getElementById()和其他功能受XSS限制.我只想postMessage在父页面上向http://me.com/上面示例中的所有其他iFrame 发出一个来自我的域的所有其他iFrame .
虽然这是事实,这是不可能与另一个窗口/ IFRAME是另一个域相互作用,这是有可能得到这样的窗口/ iframe和引用都嵌入到窗口/ IFRAME孩子I帧.这样做的方法是使用window.top.frames(访问顶部窗口对象)或window.parent.frames(访问直接父窗口对象,而可能有其他更高级别的祖先).无需使用getElementById或其他与DOM相关的功能.有关详细信息,请参阅此处:https://developer.mozilla.org/en-US/docs/DOM/window.frames
window.frames属性返回一个类似于数组的对象,然后您可以迭代并在每个iframe上执行postMessage.这不会触发同源限制,因为除了在它们上使用postMessage之外,您不会以任何方式与任何窗口进行交互.由于您希望在特定域的每个iframe上执行postMessage,因此您可以执行以下操作:
var frames = window.parent.frames;
for (var i = 0; i < frames.length; i++) {
frames[i].postMessage("hello", targetDomain);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2590 次 |
| 最近记录: |