Per quanto riguarda la tua prima domanda, probabilmente dovresti renderla un'opzione o almeno interrogare l'utente su quale pezzo (i) di informazioni hanno dimenticato. Se hanno dimenticato la password ma ricordano la domanda di sicurezza, non ha senso richiedere una nuova risposta alla domanda di sicurezza. Se l'utente ha dimenticato entrambi, sarà necessario ripristinarli entrambi.
Potresti richiederli per entrambe le informazioni, ma non richiedere le risposte a entrambi. Quindi, se un utente immette una nuova password ma non una nuova domanda di sicurezza, la password verrà archiviata e verrà salvato il vecchio record di risposta alla domanda di sicurezza. L'utente potrebbe anche fornire entrambe le informazioni e in tal caso aggiornare i record degli utenti per entrambi.
Le domande di sicurezza non funzionano molto bene con il modello di reset. Non puoi aspettarti che scelgano una risposta diversa per la stessa domanda, quindi significa anche cambiare le domande. A seconda del sito, potrebbero esserci già un numero limitato di domande, che l'utente medio ridurrà ulteriormente a seconda di quali utenti possono rispondere o desidera utilizzare. Quindi forzare una modifica ad ogni reimpostazione della password può rendere le nuove risposte ancora meno memorabili.
Allo stesso modo, la 'parola memorabile' è essenzialmente solo un'altra password. Quindi, se lo ripristini ogni volta che una password deve essere resettata, stai dando all'utente due nuove informazioni da memorizzare. Passa da "memorabile" a "una parola casuale che sono stato costretto a inventare".
Per la tua seconda domanda, l'unica sicurezza di azzeramento della risposta o parola è se un utente malintenzionato ha ottenuto tali informazioni insieme a una password valida. Se un utente si rende conto di questo furto, potrebbe voler cambiare password e risposte di sicurezza. Potrebbero esserci situazioni in cui ciò è vero, ma non mi aspetterei che la maggior parte delle reimpostazioni di password utente siano associate a questo tipo di compromissione.