Chiaramente funziona meglio se la richiesta di aggiornamento di una password avviene come risposta a una richiesta in entrata per accedere a un sistema noto, ma come fai una richiesta in uscita agli utenti per aggiornare le loro password?
Il modo semplice e sicuro è un round-about, "Non devi."
Quando un utente effettua il login con la sua vecchia password, visualizza un avviso che dice che è necessario reimpostare la propria password. Genera un'email con un token di ripristino e invialo al suo indirizzo email. Il token dell'indirizzo email deve essere utilizzato perché non ci fidiamo più della password (e speriamo che l'indirizzo email sia ancora sotto il controllo di un utente).
Se stai chiedendo agli utenti di aggiornare le loro password, potrebbe essere perché stai modificando gli algoritmi di hashing. Ciò dovrebbe accadere davvero dietro le quinte o comportare la rivendicazione di vecchi conti piuttosto che lasciarli in sospeso. È probabilmente perché hai riscontrato una violazione, però.
Le violazioni riguardano i clienti anche se non si detengono informazioni sensibili perché le presenze online sono spesso collegate (stesso nome utente, indirizzo e-mail, ecc.) e poiché le password vengono spesso riutilizzate. Se hai perso il controllo del tuo database delle password, gli utenti potrebbero essere a rischio di avere tali password forzate e quindi utilizzate contro account di altri siti.
Indipendentemente dalla tua motivazione, il metodo tecnico di modifica delle password rimane lo stesso. Se hai avuto una violazione, tuttavia, rivelare che è importante per il tuo dovere etico verso i tuoi utenti e, a volte, per i requisiti legali in base alla tua giurisdizione. Il modo in cui la lettera è scritta è una combinazione interamente di questioni legali e soggettive, ma dovrebbe spiegare perché gli utenti potrebbero dover essere preoccupati per altri account e perché devono reimpostare la password al loro prossimo accesso.
Ovviamente, se vuoi inviare una richiesta agli utenti (senza aspettare che ritorni), devi contattarli in qualche modo, il che, il più delle volte, significa inviare e-mail. Funziona solo se conosci un indirizzo email valido per ogni utente (che è un buon motivo per verificare l'indirizzo email quando l'utente si registra per la prima volta).
Grazie a spammer e altri criminali con intenzioni fraudolente, gli utenti tipici sono addestrati a ignorare le email che parlano di password. Questo è il tuo più grande problema. Allo stesso modo, non vuoi davvero invertire quel tipo di allenamento. Sarebbe quindi una cattiva pratica inviare un'e-mail con un link cliccabile a una pagina di reimpostazione della password: gli utenti sensibili alla sicurezza non seguiranno il link e gli altri dimostreranno quanto vulnerabili siano.
Proviamo in un altro modo. Di solito, quando è necessario che gli utenti eseguano un reset di massa delle password, è perché si sospetta, per qualche ragione contestuale, che un numero considerevole di password utente possa essere compromesso. Ad esempio, qualcuno ha fatto irruzione nel tuo server e ha afferrato una copia del database delle password con hash.
Le password compromesse sono un problema perché consentono il rientro non autorizzato. Viceversa, le password compromesse sono non un problema (almeno, non per il server) finché l'utente malintenzionato non tenta di tornare indietro. Ciò significa che puoi, in qualche modo, aspettare. Tecnicamente, questo implica quanto segue:
Questa configurazione è "sicura" purché si presuma che l'utente malintenzionato non abbia indovinato la password di un utente e ha compromesso l'e-mail dell'utente nello stesso momento.
La rilevanza dell'invio di e-mail di massa dipende dalla situazione: può essere utile per le pubbliche relazioni ("guarda, stiamo prendendo sul serio la sicurezza, e non vogliamo nascondere i problemi") e può essere negativo per il pubblico relazioni ("siamo stati hackerati, è imbarazzante"). L'attuale zeitgeist è che, in generale, l'email dovrebbe essere inviata; negare i problemi ha un'alta probabilità di renderli solo peggiori. Ammetti la tua sfortuna, mangia il cappello e implora perdono: gli utenti ti perdoneranno se ritengono di trattarli "in modo equo" (ad esempio, usi molte lusinghe). Inoltre, come si indica, gli utenti tendono a riutilizzare le password, quindi anche se questo non è tecnicamente il problema, un avviso proattivo sarà percepito come un gesto positivo.
Se il tuo server è abbastanza grande, assumi subito uno specialista di pubbliche relazioni per gestire la crisi.
La tua unica opzione, se non vuoi aspettare il prossimo accesso dei tuoi utenti, è mandare ai tuoi utenti un'email e chiedere loro di accedere. Questo è un po 'discutibile: i tuoi utenti possono eliminare l'e-mail come spam / phishing.
In alternativa, puoi disabilitare tutti gli account utente sul tuo sito e, al prossimo accesso, richiedere loro di eseguire alcuni processi extra speciali per autenticarsi. Oltre a richiedere loro di fornire la loro password, potresti anche richiedere loro di risolvere un CAPTCHA o porre loro alcune domande sull'attività del loro account (ad esempio, per un provider di posta elettronica, chiedere loro di fornire gli indirizzi email di alcuni corrispondenti che l'utente contatti regolari). Oppure potresti eseguire altri controlli. Niente di tutto questo è l'ideale, ma hey, hai chiesto.
Leggi altre domande sui tag passwords password-management password-policy disclosure