it-swarm.it

Esegui la migrazione degli account utente dal sistema con password con hash

Ho un sistema con alcune migliaia di account utente che devo migrare su una nuova piattaforma. Il sistema memorizza una password con hash, non crittografata o (per fortuna) testo semplice. Inoltre, non ho prontamente disponibili i dettagli dell'hash.

Quali sono alcuni modi efficaci per effettuare la transizione? Un'idea mi viene in mente dalla cima della mia testa:

  1. In anticipo, posso migrare tutti i dati. Gli utenti attuali nella vecchia piattaforma avranno un account e tutti i loro dati nella nuova piattaforma.
  2. Copia parte del codice che attualmente gestisce l'autenticazione e trasformalo in un tipo di servizio che verificherà la validità del nome utente/password.
  3. La nuova piattaforma può prima verificare la propria autenticazione per vedere se la password è stata trasferita. In caso contrario, potrebbe chiamare il servizio sull'altra piattaforma per determinare se è valido nel vecchio sistema.
  4. Se non è valido, indica all'utente che il suo accesso era errato.
  5. Se è valido, ora conosce la password corretta e può popolare la propria tabella utente con la password (secondo lo schema utilizzato dalla piattaforma).
3
Larsenal

Di recente ho riscontrato un problema simile, tranne per il fatto che non avevo accesso all'algoritmo di hash utilizzato. Penso che tu abbia 2 scelte.

  1. Spostare tutti i profili utente sul nuovo sistema e disporre di una colonna aggiuntiva con il loro vecchio hash della password.
  2. Quando l'utente accede per la prima volta il sistema non vede alcun account esistente nel nuovo sistema ma esiste un hash dal vecchio sistema. Il sistema manterrà una copia pre-hash della password e verificherà la versione con hash rispetto al vecchio hash.
  3. Se le vecchie corrispondenze hash impostano la password nel nuovo sistema su ciò che hanno inviato.

Tuttavia, se scopri di non avere accesso all'algoritmo hash e hai l'indirizzo e-mail di ciascun utente, hai un'altra scelta. Questo è quello che ho effettivamente fatto:

  1. Copia su tutti i nomi utente, indirizzo e-mail e informazioni dal vecchio al nuovo sistema. Inserisci una colonna flag nella tabella che indica che l'utente proviene dal vecchio sistema.
  2. Quando l'utente accede per la prima volta al nuovo sistema, il nuovo sistema vedrà che ha un account ma non ha password.
  3. Chiedi al tuo sistema di mettere un messaggio sullo schermo dicendo qualcosa del tipo "Abbiamo aggiornato il nostro sito Web e il tuo account utente è stato convertito. A breve riceverai un'email con una nuova password temporanea (assicurati che la password o il link speciale funzionino solo per un breve periodo periodo di tempo).
  4. Invia all'utente una password temporanea al tuo nuovo sito che consentirà loro di accedere. Una volta effettuato l'accesso per la prima volta, fai reimpostare la password su quello che preferisce.

La seconda opzione ha funzionato abbastanza bene per me. Non ho praticamente avuto lamentele da parte degli utenti ed è relativamente sicuro poiché è il normale processo per un utente di reimpostare la password dimenticata.

3
Ben Hoffman

Prima di affrontare troppi problemi, hai esaminato quale potrebbe essere l'algoritmo hash? Se fossero abbastanza sani da usare le password con hash, si spera fossero abbastanza sani da usare un algoritmo di hash comune (MD5, SHA1, ecc.).

Potrebbe valere la pena provare alcune opzioni comuni per vedere se è possibile decodificare ciò che stavano facendo.

Inoltre, menzioni "strappare parte del codice che attualmente esegue l'autenticazione". Come mai hai il codice, ma non l'algoritmo hash?

0
Eric Petroelje