È sicuro condividere un token di accesso tramite API di messaggistica HTML5 tra vari iframe?

7

Possiedo un sito Web principale che incorpora altri 3 siti Web tramite iframe (sistemi legacy che offrono varie funzionalità con un'interfaccia utente). Attualmente l'utente deve autenticarsi con ciascuno dei sistemi nonostante stiano tutti utilizzando lo stesso server di autorizzazione. Per renderlo user-friendly stavo pensando di condividere il token di accesso tra i vari iframe usando l'API di messaggistica HTML5 e mi chiedevo se questo approccio sia fattibile dal punto di vista della sicurezza?

    
posta westbeam87 10.10.2016 - 00:16
fonte

2 risposte

2

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.

  1. 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.

  2. 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

    
risposta data 06.10.2017 - 08:24
fonte
0

Puoi leggere le regole che i moderni browser seguono sul controllo dell'accesso ai cookie e ai domini: RFC6265

Gli IFrame per molti motivi sono non raccomandati (come SEO, indicizzazione di google, sicurezza, ...).

La nuova versione di browser con configurazione predefinita del dominio dei cookie è 99% sicuro in questo argomento. Tuttavia, i maggiori rischi per la sicurezza nella storia di IFrame (e browser) riguardavano CSRF e XSS. Quindi, se proteggi i tuoi siti con token CSRF e metodi di filtraggio XSS + corretta configurazione del dominio dei cookie, anche con un browser vulnerabile è approssimativamente sicuro utilizzare IFrame.

    
risposta data 10.10.2016 - 02:11
fonte

Leggi altre domande sui tag