Sono attualmente un ingegnere su un progetto in fase di sviluppo. Un "modulo" su questo progetto dà la possibilità per l'autenticazione / autorizzazione dell'utente. Tuttavia, ci viene in mente che l'algoritmo di hashing della password potrebbe non essere all'altezza di cop (ovvero non BCrypt). (La cosa terribile non è abbastanza sicuro di cosa sia e da dove viene!).
Questo ovviamente deve cambiare e la patch è in programma. Dobbiamo aggiornare naturalmente tutti i nostri utenti di test perché le loro password utilizzeranno il vecchio metodo di hashing, non un grosso problema, tutti i nostri utenti demo sono automatizzati su build, quindi sta aggiornando lo script. Ma la prossima domanda è se questo è un sistema di produzione con utenti attivi e stantii, di tutte le quantità. Quale sarebbe la migliore pratica.
- forzare automaticamente la reimpostazione della password su ogni utente? Ciò notificherà ad ogni utente che la sua password è stata cambiata e potrebbe causare domande / confusione e potrebbe causare il sospetto di una violazione della sicurezza. Possono essere poste più domande a cui potrebbe non essere possibile rispondere necessariamente dagli stakeholder del sito Web.
- Aggiorna il DB per segnalare se si tratta del nuovo o del vecchio metodo, quindi una volta che un utente è stato autenticato, aggiorna la password nel DB utilizzando. Richiede un po 'di logica nel servizio e la transizione apparirà imprevedibile a qualsiasi utente esistente. Il problema è che se ci fosse una violazione, allora potrebbe essere evidente che ci sono due metodi in corso qui e se uno meno sicuro risulta essere insicuro, potrebbe ovviamente essere rotto.
- Reimposta tutte le password, utilizzando una versione BCrypted dell'hash esistente. Contrassegnalo come vecchio stile, quindi con un'autenticazione corretta mantiene solo un hash della password piuttosto che un hash di un hash.