This site is the archived OWASP Foundation Wiki and is no longer accepting Account Requests.
To view the new OWASP Foundation website, please visit https://owasp.org

Difference between revisions of "Forgot Password Cheat Sheet"

From OWASP
Jump to: navigation, search
m
m (1) Gather Identity Data)
Line 12: Line 12:
  
 
== 1) Gather Identity Data ==
 
== 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 ==
 
== 2) Verify Security Questions ==

Revision as of 22:48, 1 March 2011

Introduction

This article provides a simple model to follow when implementing a "forgot password" web application feature.

The Problem

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.

Steps

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

Related Articles

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