Hi, I've seen various questions regarding this issue, but there are a couple of questions that haven't been asked. If the user forgets their password, I would like them to be able to reset it with only their email address (i.e. there's no security question/answer). The password is stored as a salted hash, so there's no recovery possible. Instead, I'd just like the user to enter a new password after confirming that they have requested a reset.
A common method that's been mentioned is to simply:
1) Create a random Guid/Cryptographically strong random number
2) Send a unique URL containing the random number to the user's email address
3) When confirmed, the user is asked to change password
However, isn't this open to a MITM
attack? If sending a temporary passwords over the internet to an email is insecure, what's the difference between doing that and simply sending a unique URL which the attacker can navigate to?
Have I missed a key step somewhere that will make this system more secure (Or is there a better way of resetting the password)?
Thanks