Avrai difficoltà a decidere quale dei due valori memorizzati utilizzare come password prevista dall'utente (quella nella memoria locale o quella nel campo di input), se nessuno di questi è vuoto ma per alcuni motivo diverso.
Questo può potenzialmente fornire un vettore di attacco di ingegneria sociale, in cui l'attaccante prepara una trappola aprendo il modulo di registrazione, riempiendo la memoria locale / di sessione usando il proprio codice e in seguito rimuovendo eventuali tracce (notifiche di errore di input) con un editor DOM, o inserendo la password desiderata direttamente nella memoria locale / di sessione (entrambi sono supportati su alcuni browser ed estremamente facili da fare), poi chiedendo alla vittima di registrarsi con il tuo sito web e, beh, usarlo. Poiché il tuo codice può essere facilmente ispezionato / testato per vedere come gestisci tali casi, l'autore dell'attacco potrebbe farlo in modo leggermente diverso da quello che ho descritto (anche le iniezioni di script direttamente nell'archiviazione locale / di sessione non sono fuori questione, se procederai successivamente quel valore localmente sul modulo POST), ma con lo stesso effetto.
La vittima non sospetterà nulla finché non si disconnette e prova a ricollegarsi. A seconda della persistenza della sessione utente, questo processo di disconnessione e di accesso potrebbe non essere necessario e la vittima non ho notato che la sua password non era quella che inseriva nel campo della password, ma invece la password di scelta dell'utente malintenzionato è stata utilizzata per creare il suo nuovo account.
Agli aghi, l'attaccante ha appena ottenuto l'accesso all'account appena creato della vittima e tutti i dati che la vittima ha inserito, anche se la vittima era cauta e si è assicurata che non vi fosse alcun coinvolgimento delle spalle.
Quindi il punto d'appoggio qui è che potenzialmente dovrai gestire due diverse posizioni del sistema con gli stessi dati di registrazione, che potrebbero per qualsiasi motivo differire e decidere quale utilizzare in un modo sicuro sia per il tuo sistema, così come l'utente finale che si sta registrando. Questo potrebbe rivelarsi piuttosto difficile da fare correttamente, quindi consiglierei di non farlo.
Piuttosto, assicurati che il tuo modulo di registrazione sia servito tramite HTTPS, quindi semplicemente riempi il campo della password, poiché è stato inserito l'ultima volta nella richiesta POST dell'utente e se soddisfa i tuoi vincoli, anche se alcuni degli altri campi di input sono compilato in modo errato e il modulo deve essere ripubblicato.