Forgot Password Cheat Sheet
This article provides a simple model to follow when implementing a "forgot password" web application feature.
There is no industry standard for implementing the "Forgot Password' featyre. The result is that users could be forced to jump through myriad hoops involving emails, special URLs, temporary passwords, personal security questions, and so on. In some applications you can recover your existing password. In others you have to reset it to a new value.
The recommendations presented for implementing "Forgot Password" are most appropriate for organizations that have a business relationship with users. Web applications that target the general public (social networking, free email sites, etc.) are fundamentally different and some concepts presented may not be feasible in those situations.
1) Gather Identity Data
The first page of a secure forgot password feature asks the user for multiple pieces of hard data. A single HTML form should be used for all of the inputs.
A minimum of three inputs is recommended, but the more you require, the more secure it will be. One of the inputs, preferably listed first, should be the username. Others can be selected depending on the nature of the data available to the application. Examples include:
- email address
- last name
- date of birth
- account number
- customer number
- social security number
- zip code for address on file
- street number for address on file
2) Verify Security Questions
3) Send a Token Over a Side-Channel
4) Allow user to change password
Fishnet Security - Secure Forgot Password
OWASP Cheat Sheets Project Homepage
Authors and Primary Editors
David Furgeson - David.Ferguson[at]fishnetsecurity.com
Jim Manico - jim[at]owasp.org