Las preguntas de seguridad ya no se consideran un mecanismo lo suficientemente bueno para proteger la recuperación de la cuenta, a menudo se pueden adivinar o se pueden obtener fácilmente a través de OSINT.
Fuente: enlace
Fuente 2: enlace
Fuente 3: enlace
Debería mirar el uso de tokens de reinicio y enviar ese token a su usuario por correo electrónico.
Si insiste en usar preguntas de seguridad, hay algunas cosas que debe considerar. Tener las preguntas antes del enlace de restablecimiento significa que si conoce el nombre de usuario del usuario o tal vez una dirección de correo electrónico, puede acceder a sus preguntas, investigar y encontrar respuestas a esas preguntas.
Tenerlos después de que se haya emitido el correo electrónico de restablecimiento significa que el usuario debe tener acceso a esa cuenta de correo electrónico para acceder incluso a las preguntas en primer lugar.
La Guía de OWASP dice que debes verificar las preguntas antes de enviar un token:
enlace
Si está transmitiendo respuestas entre su cliente y el servidor, trátelos de forma segura como si fuera una contraseña. Use POST sobre HTTPS, no los ponga en la URL o en los encabezados. Vuélvalos a enviar de forma segura.
Esta publicación aquí en Security Stack Exchange también vale la pena leer:
¿Cómo implementar la funcionalidad de "olvidé la contraseña"?