Ho un'app Web che include siti Web di terze parti negli iframe. I siti web di terze parti richiedono che l'utente abbia effettuato l'accesso. L'opzione A richiede all'utente di accedere a ciascun sito Web individualmente tramite iframe e fare affidamento sui cookie per ricordare l'utente. Ciò tuttavia è abbastanza scomodo e alcuni utenti preferirebbero sicuramente un unico accesso per tutti i siti Web, quindi questa è la mia opzione B:
Si basa quasi interamente sulla sicurezza e sulla crittografia del frontend.
Innanzitutto, memorizzando la password. Ogni utente ha una password (password principale) per la mia app Web. La password, oltre ad essere utilizzata per l'accesso al mio sito Web, verrebbe anche utilizzata per crittografare le credenziali dell'utente dai siti Web degli utenti. Quindi le credenziali vengono crittografate usando la password principale sul mio server e solo l'utente può decrittografarle. È qui che ho una domanda, dovrei semplicemente crittografarla usando la password da solo, o alcune chiavi magiche segrete o alcune cose potrebbero essere utilizzate per rafforzare la crittografia?
Processo generale:
- L'utente accede alla mia app Web.
- La password principale è memorizzata nella memoria del browser per un ulteriore utilizzo
-
Estrazione di credenziali crittografate dal server e decodifica in frontend, usando la password principale
-
le credenziali decrittografate sono memorizzate nella memoria del browser
-
apri iframe di accesso e invia le credenziali usando postMessage al login iframe (inclusa la convalida dell'origine)
-
accedi automaticamente (ho un plugin di integrazione per i siti, ecco fatto perché potrei farlo).
Si noti che l'accesso all'app Web e la decrittografia delle credenziali sono 2 processi diversi. Se l'utente aggiorna il sito Web, è ancora connesso, non può accedere alle credenziali. Gli sarà richiesta di nuovo la password. Questo non è un problema, dal momento che la sessione da siti Web di terze parti verrà comunque ricordata dal browser.
Quindi i dati del frontend verrebbero protetti dagli iframe dalla sicurezza Web e fintanto che mi assicurerò che non ci siano sink XSS nell'app Web, non c'è modo che queste password perdano, vero? Anche se il server è stato compromesso.
L'unico modo in cui lo vedo, se il server è stato compromesso e qualcuno ha modificato il codice di frontend per essere malevolo e prendere le password. Ma è qualcosa che sarebbe sempre pericoloso, anche se non implementavo affatto l'autologin.
Voglio solo la tua opinione se questo è un modo sicuro per archiviare e utilizzare password e cosa potrebbe potenzialmente andare storto. Soprattutto, è sicuro archiviare le password nella memoria javascript e come crittografare le credenziali - utilizzare solo la password dell'utente o magari aggiungere un token segreto a tale password (non so se abbia senso). Tutto ciò che lo renderebbe più sicuro. Qualsiasi aiuto apprezzato.