Tutto si riduce al rischio. Lì è un certo rischio che il link di reset possa essere ottenuto da qualche terza parte, ma quanto ci vorrà è da indovinare. Se la terza parte ha accesso all'account email in qualche modo, non importa in alcun modo, ma c'è la possibilità che l'accesso sia limitato finché l'utente non si allontana dalla sua tastiera senza ricordare di bloccare lo schermo. In realtà, quanto è banale da implementare, perché non vorresti far scadere il link dopo 15/30/60 minuti?
Personalmente, quando sviluppo un'app web con un sistema di reset di accesso, cerco di evitare di usare i collegamenti via email da soli, a meno che I assolutamente non debba farlo. Preferisco di gran lunga un sistema in cui l'utente può reimpostare la propria password sull'applicazione Web stessa, richiedendo loro di inserire 2/3 di informazioni che erano state configurate al momento della creazione dell'account (e quindi eventualmente l'invio tramite e-mail di un collegamento / codice / altro). Di solito le informazioni non possono essere modificate dall'utente, in modo che se l'account viene compromesso, la terza parte non può bloccare l'utente reale dal reimpostare la propria password.
Nessun metodo è a prova di tutto, tutto si riduce a cercare di mitigare i rischi il più possibile senza implementare una sorta di rituale simile ad Aztec che comporta un sacrificio di sangue per reimpostare le password.