rfc:password_hash

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
rfc:password_hash [2012/09/04 14:50] – [New Constants] moved ending brace, if -> when datibbawrfc:password_hash [2012/10/16 09:05] – Implemented! ircmaxell
Line 1: Line 1:
 ====== Request for Comments: Adding simple password hashing API ====== ====== Request for Comments: Adding simple password hashing API ======
-  * Version: 1.3+  * Version: 1.4
   * Date: 2012-06-26   * Date: 2012-06-26
   * Author: Anthony Ferrara <ircmaxell@php.net>   * Author: Anthony Ferrara <ircmaxell@php.net>
-  * Status: Voting Opened+  * Status: Implemented
   * First Published at: http://wiki.php.net/rfc/password_hash   * First Published at: http://wiki.php.net/rfc/password_hash
  
Line 22: Line 22:
 ==== Why Do We Need A Simple API ==== ==== Why Do We Need A Simple API ====
  
-As recent attacks have shown, strong password hashing is something that the vast majority of PHP developers don't understand, or don't think is worth the effort. The current core implementations of strong password hashing using //crypt()// are actually fairly difficult to work with. The error states are difficult to check for (returning //*0// or //*1// on error). The salt format is difficult to generate as it uses a custom base64 alphabet (//.// instead of //+// and no padded //=//). Additionally, salts are reasonably difficult to generate randomly (not too difficult, but requires a fair bit of code). Additionally, checking the return when validating a password can expose the application to [[remote timing attacks|http://en.wikipedia.org/wiki/Timing_attack]].+As recent attacks have shown, strong password hashing is something that the vast majority of PHP developers don't understand, or don't think is worth the effort. The current core implementations of strong password hashing using //crypt()// are actually fairly difficult to work with. The error states are difficult to check for (returning //*0// or //*1// on error). The salt format is difficult to generate as it uses a custom base64 alphabet (//.// instead of //+// and no padded //=//). Additionally, salts are reasonably difficult to generate randomly (not too difficult, but requires a fair bit of code). Additionally, checking the return when validating a password can expose the application to [[http://en.wikipedia.org/wiki/Timing_attack|remote timing attacks]].
  
 By providing a simple API that can be called, which takes care of all of those issues for you, hopefully more projects and developers will be able to use secure password hashing.  By providing a simple API that can be called, which takes care of all of those issues for you, hopefully more projects and developers will be able to use secure password hashing. 
- 
 ===== Common Misconceptions ===== ===== Common Misconceptions =====
  
Line 404: Line 403:
  
 <doodle  <doodle 
-title="Should the simplified password hashing API indicated here be included in master?" auth="ircmaxell" voteType="single" closed="False">+title="Should the simplified password hashing API indicated here be included in master?" auth="ircmaxell" voteType="single" closed="true">
    * Yes    * Yes
    * No    * No
Line 422: Line 421:
   * 1.2 - Removed //password_make_salt()// function from proposal   * 1.2 - Removed //password_make_salt()// function from proposal
   * 1.3 - Open Voting   * 1.3 - Open Voting
 +  * 1.4 - Close Voting - Moving To Accepted
 +  * 1.5 - Implemented!
rfc/password_hash.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1