gpt4 book ai didi

javascript - HTML5 跨文档消息传递 : can Malicious code sniff messages between domainA. com 和 domainB.com?

转载 作者:搜寻专家 更新时间:2023-11-01 04:32:36 24 4
gpt4 key购买 nike

根据 10.4 Cross-document messaging : domainA.com 可以使用跨文档消息传递的方式向 domainB.com 发送消息,以在源和数据验证时防止跨站点脚本攻击。

enter image description here

问题:假设 domainA.com 遭到破坏,攻击者注入(inject)了有效负载来跟踪 domainA.com 和 domainB.com 之间的消息,这可能吗?

为了更好地理解:可以通过更改原始 Web Socket 对象来嗅探 Web Socket 流量,工作示例解释了 Here ,我提取了这部分:

if (captureWebsocket && window.WebSocket) {

// add logging onmessage listener
function captureRecv(ws) {
if (typeof ws.captured == 'undefined') {
ws.addEventListener('message', function(e) {
var event = {
event: 'websocket_recv',
from: location,
data: e.data,
url: e.target.URL
}
log(event);
});
ws.captured = true;
}
}

// capture sending
var captureSend = this.contentWindow.WebSocket.prototype.send = function() {
captureRecv(this); // in case socket contruction was before constructor switching
var event = {
event: 'websocket_send',
from: location,
data: arguments[0],
url: this.URL
};

log(event);
return window.WebSocket.prototype.send.apply(this, arguments);
}

// capture constructor
this.contentWindow.WebSocket = function(a,b) {
var base;
base = (typeof b !== "undefined") ? new WebSocket(a,b) : new WebSocket(a);
captureRecv(base);
base.send = captureSend;
this.__proto__ = WebSocket.constructor;
return base;
}
}
});

最佳答案

如果 domainA.com 遭到破坏,您就完蛋了。注入(inject)的脚本可以只添加另一个窗口“消息”事件处理程序,并且因为它在同一个源上,它开始接收域 B postMessage 的所有内容,并且能够将消息发送回域 B。

不仅如此,他们还可以使用 JS 找到 iframe,删除任何沙箱标签,允许将其视为同一来源,访问其内容,然后开始在该来源上执行任意 JS。它甚至可以修补方法,以便注入(inject)的脚本接收所有内容,而合法代码则不会。

但是,如果他们只能注入(inject)域 B,并且 iframe 已正确沙盒化,则他们无法更改域 A 所做的任何事情。不过,这仍然足以让他们看到 postMessage() 发送和接收的所有内容。

最好的办法可能是让“secureDomain.com”在沙盒 iframe 中包含两个脚本,然后它们可以相互通信。假设无法注入(inject) secureDomain.com,那么至少注入(inject)只会影响单个域,并且不允许同时访问这两个域。

关于javascript - HTML5 跨文档消息传递 : can Malicious code sniff messages between domainA. com 和 domainB.com?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16456088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com