| I disagree with the section titled "Username enumeration and the impact on anonymity". The author is trying to make the point that you shouldn't tell users that their username is invalid in a password reset flow. The author then goes further and recommends obscuring error messages during the login flow as well. I find this behaviour to be user hostile and not particularly effective at concealing anonymity. Under the same threat model, a suitably motivated third party can simply attempt to sign up with the same username, and you'll definitely have an error message if the user is already signed up (and that's besides the point that just because a username exists doesn't mean the person behind that identifier actually signed up, anyone could've done it). The author tries to justify their position by calling it a "slight usability tax" and "a small trade-off for an infrequent process", but my very short experience building a consumer oriented SaaS is that: 1. Password requests are frequent, even with ~5k users 2. Lots of people have more than one email address, and frequently forget which one they used for your service. 3. The support burden simply isn't worth the pseudo-anonymity. |
Of course if the username can’t be an email then the email address must be required for login, the username is just for display purposes.
Also when doing the password reset you don’t need to tell them their email is invalid, you just send out the email for reseting as normal but have some text at the end saying ”if this wasn’t you blah blah blah...” and ignore it if it’s an invalid email.
And of course there are ways of dealing with changing of email address.