Le domande di sicurezza non sono più considerate un meccanismo abbastanza valido per proteggere il recupero dell'account, sono spesso ipotizzabili o facilmente ottenibili tramite OSINT.
Fonte: link
Fonte 2: link
Fonte 3: link
Dovresti esaminare i token di ripristino e inviare quel token al tuo utente via email.
Se insisti nell'usare domande di sicurezza, allora ci sono alcune cose da considerare. Avere le domande prima del link di reset significa che se conosci il nome utente dell'utente o forse un indirizzo email, puoi accedere alle loro domande, fare qualche ricerca e trovare le risposte a queste domande.
Averli dopo che l'e-mail di reset è stata emessa significa che l'utente deve avere accesso a quell'account e-mail per accedere anche alle domande in primo luogo.
OWASP Guidance dice che dovresti verificare le domande prima di inviare un token:
link
Se stai trasmettendo le risposte tra il tuo client e il server, trattale in modo sicuro come se fosse una password. Usa POST su HTTPS, non metterli nell'URL o nelle intestazioni. POSTli di nuovo in un formato sicuro.
Vale anche la pena leggere questo post qui su Security Stack Exchange:
Come implementare la funzionalità "password dimenticata"?