L'API postMessage è progettata per le comunicazioni tra domini come parte del Meccanismo di condivisione delle risorse Cross Origin.
Il metodo Window.postMessage (), introdotto in HTML5, consente al codice JavaScript in esecuzione su origini diverse di comunicare tra loro in modo bidirezionale. Questa API può essere utilizzata per la comunicazione tra un iframe e il suo documento principale. Allo stesso modo, può essere utilizzato da una pagina HTML e da una finestra secondaria per scambiare messaggi, ad esempio un video di terze parti incorporato che notifica il frame principale quando l'utente mette in pausa il video.
Le classiche regole di sicurezza si applicano anche alle applicazioni che utilizzano postMessage (). Stai pianificando di utilizzare questo metodo per condividere le informazioni di autenticazione che è perfettamente soddisfacente se segui le regole di convalida dell'input di base durante l'implementazione.
-
Non trasmetti mai i token di autenticazione : lo scenario contiene più parti che devono poter accedere a un token comune. potresti essere tentato di trasmettere le informazioni di autenticazione in modo che tutti gli iframe possano accedervi. Ciò potrebbe comportare l'accesso non autorizzato ai token. Quindi la chiamata postMessage () dovrebbe sempre specificare l'origine di destinazione.
-
Convalida sempre l'origine del messaggio : devi convalidare che il messaggio è stato ricevuto da un'origine valida e prevista. Solo dopo la convalida dell'origine devi procedere con l'utilizzo del messaggio nella logica dell'applicazione. Immagina un caso in cui la tua app è iframed da un dominio dannoso. Se non si convalida l'origine del messaggio, è possibile che si verifichi un'iniezione di script.
Inoltre, a seconda della relazione di fiducia con il server di autorizzazione, potresti voler convalidare il token stesso una volta convalidata l'origine del mittente.
Per un'analisi più dettagliata della sicurezza dell'API postMessage () insieme ad alcuni frammenti di codice di esempio, fare riferimento al mio Blog