Respectfully, I disagree, for a number of reasons.
Before I get into the reasons themselves, I want to say a sincere thank you for your interest and your feedback. It makes me really happy when someone takes enough of an interest in something I build to post their feedback to help me make it even better. It really is the best thing a coder could wish for (that isn't considered legal tender in their country of choice, anyway
).
In short, thank you
Now then:
- Password reset links expire.
If this mod sent links to users for them to be given a new password, we would be assuming that everyone who was registered to the forum was able to check their email and click the link within 15 minutes. That isn't really feasible as I'm sure you can understand.
If we were to make a new password reset link that was permanent, I don't see how there would be a difference between this link and the new temporary password being sent in plain text, as any attacker that had broken in to the user's email provider to click this link would then simply wait for 30 seconds until the password arrived in the inbox.
- It's less user friendly.
I believe that requiring people to click a link only to receive a password is an extra step that would complicate the process for the user. When considering that attackers who had breached the security on the email provider could just as easily click the link to receive the password, I don't believe we should require users to do it.
- It's meant to be a temporary password.
If an attacker breaches the security on the email provider later down the line, the password would ideally be changed already by the user.
If the user has not changed the temporary password, and uses an easy-to-guess password for their email provider, and did not delete the "this is your new password" email, then I don't believe there would be a difference if there was a password reset link or not.
There's only so much we can do to keep a user safe from themselves, after all
- Displaying the password on-screen after they click the link could lead to users being locked out.
Let's say we made a completely new system where the password reset link was permanent and instead of emailing users their new password, we display it on the page once they click their confirmation link. That would bypass any of the issues I've highlighted thus far, and would ideally be a completely secure system where any attackers breaking into the email account would see a dead, useless reset link.
However, I know from experience that some users would not expect the password on that page and would close it before copying their password. That's not to mention the rare scenario where their browser crashes on load, and the tab restoration feature on re-launch failed to load this new tab.
If we immediately invalidated the confirmation link once the page had loaded, this would force users to reset their passwords again, which is something that we might end up receiving complaints about, from forum admins that in turn received complaints from their users.
I know it's a rare occurrence, but part of my job is to build a system where the system doesn't completely fail to work if the user either makes a minor mistake or experiences something entirely out of their control.
- We can't account for users' email accounts not being secure.
I don't have much to say on this to be honest. Since I want to build a system that is a healthy mix of security and user friendliness, at some point I have to make a concession and assume that the user's email accounts are secure. As far as I'm aware, every major email provider supports two-factor authentication for their email systems (personally I use Gmail and have it set up for all of my accounts) so in my opinion, it's reasonable to assume that a user's email account is safe enough to deliver this temporary password.
I formatted it the way I did because I wanted to make it easier to refer to my individual points if you - or anyone else for that matter - disagree with anything I've said here. If you're reading this and you do disagree, please do tell me. I'm often wrong, and I'm always willing to listen
If you made it this far then thank you for your time
Fillip