All posts
Security
·
·
4 min read
Why your sign-in page should never say “wrong password”
Small copy decisions that stop account enumeration without making the page harder to use.

Kwame Asante
Security Lead

“No account found with that email” is one of the most helpful messages a sign-in page can show. It’s also a gift to anyone trying to learn which of your users have accounts. Run a list of leaked emails against that form and you get back a tidy list of targets.
Say what happens next, not who exists
The fix is to answer the same way whether or not the account exists. Lintel’s components say “Check your email for a sign-in code” for every address, then send a code only to real accounts and a short note to addresses without one. The person at the keyboard learns what to do next. Someone scripting the form learns nothing.
Timing leaks too
Matching the words isn’t enough if a real account takes 300 milliseconds longer to answer. We pad every response to the same duration and run the password check even when the account doesn’t exist, so the timing gives nothing away either.
The trade-off
Uniform messages are slightly less convenient for people who mistype their email. We soften that by showing the address back on the next screen, so a typo is obvious before anyone goes looking in the wrong inbox.
Keep reading.
More from the blog.

Product
·
Passkeys are ready. Here's how we turned them on by default
What we learned switching passkeys on for 9,000 products, and the fallbacks that kept sign-in working for everyone else.

Tobias Lindqvist

Guides
·
A practical guide to organizations and roles
How to model teams, invitations and permissions so your B2B plan doesn't need a rewrite in a year.

Aarav Mehta

Product
·
Designing a sign-in form people finish
Four details from a year of testing: field order, error timing, social buttons and remembering the last method.

Hana Sato