2017-08-07 2 views
0

Ich habe gelesen, wie Sie Sicherheitsprobleme bei der Verwendung von window.postMessage() - vor allem die Vorschläge in diesem MDN doc.Sicherheitsbedenken mit window.postMessage() + iframes + Entwickler-Tools

Aber alle präventiven Tipps sind alle Client-Seite, ich habe Probleme zu verstehen, wie sie böse Schauspieler von der Bearbeitung einfach den Code in ihren Entwickler-Tools ändern würde.

Hier ist die Situation, mit der ich es zu tun habe. Ich habe eine Seite, die einen eingebetteten iframe enthält, und ich habe die Kontrolle über diesen iframe (er lebt in einer separaten Domäne, aber der Anbieter, der ihn bereitstellt, erlaubt mir, benutzerdefiniertes JavaScript in die iframe-Quelle zu legen). Das Elternfenster und der Iframe kommunizieren vor und zurück.

/** 
    window at https://firstgoodorigin.com 

    Receives message from iframe to indicate 
    its contents have loaded. 

    Once that message has been received, 
    send a message back to the iframe. 
*/ 
function handleMessage(message) { 
    if (message.origin === 'https://secondgoodorigin.com') { 
    // verify and sanitize what's in message.data 
    // (it'll be something like "loaded") 
    // if it's good, send a message back 
    message.source.postMessage('foo', 'https://secondgoodorigin.com'); 
    } 
} 

window.addEventListener('message', handleMessage, false); 


/** 
    iframe at https://secondgoodorigin.com 

    Tell parent window it has loaded. Once that happens 
    it will receive a message from the parent window, for 
    which we add an event listener. 
*/ 
window.addEventListener('load',() => { 
    window.parent.postMessage('loaded', https://firstgoodorigin.com); 
}); 

window.addEventListener('message', (message) => { 
    if (message.origin === 'https://firstgoodorigin.com') { 
    // verify and sanitize what's in message.data 
    // do stuff 
    } 
}); 

Da sowohl die Fenster Quelle und iframe Quelle werden in jemandes Web-Inspektoren bearbeitet werden, was sie daran zu hindern, alle Validierungslogik zu entfernen und durch etwas böswillig zu ersetzen? Was fehlt mir hier?

+0

Um sich zu hacken? Sobald die Dateien vom Browser heruntergeladen wurden, können sie mit ihnen auf ihrem Computer machen, was sie wollen. – Will

Antwort

0

Wie im Kommentar von Will erwähnt, kann jeder Code im Browser vom Endbenutzer bearbeitet werden, wenn er möchte. Der Zweck der Sperrung von Nachmeldungen besteht darin, eine dritte Website daran zu hindern, unerwünschte Nachrichten zu posten.

Wenn ein Benutzer bei der fraglichen Website angemeldet ist und dann eine bösartige Website lädt, kann diese Website die fragliche Website in einem iFrame oder einem Popup laden und anschließend Nachrichten veröffentlichen, die für die Website nicht autorisiert sind.