Нужно запоминать в базе когда сгенерированна подобная ссылка, и придерживаться некого TTL для нее, мне доводилось анализировать как часто пользователи восстанавливают пароль (на примере интернет магазина), в 99% случаев происходит так: заходим на сайт, не помним пароль или логин, идем в форму восстановления, пишем там свой мэил, и тут же идем в почту ждать ссылку.
Т.е. при «сроки годности» такой ссылки скажем в 1 час, все должно без проблем работать, и не дать шанса сбрутфорсить хэш пароля.
Ну и само собой если пользователь не ткнулся на сайте в «восстановить пароль» то никакого TTL в базе не будет, а значит это защит от генерации подобных ссылок с парами почта\хэш пароля.