# DESCRIPTION
This module tries to implement [OWASP](
https://owasp.org) password
recommendations for safe storage in Perl. In short OWASP recommends the
following:
- Don't limit password length or characters
- Hash the password before you crypt them
- Use either Argon2, PBKDF2, Scrypt or Bcrypt
This module currently supports Argon2, Scrypt and Bcrypt. All implementations
hash the password first with SHA-512. SHA-256 and SHA-1 are also supported.
This allows for storing password which are longer that 72 characters.
The check\_password method allows for weaker schemes as the module also allows
for inplace updates on these passwords. Please note that clear text passwords
need to be prepended with `{CLEARTEXT}` in order for [Authen::Passphrase](
https://metacpan.org/pod/Authen::Passphrase) to
do its work.
# SYNOPSIS
package MyApp::Authentication;
use Password::OWASP::Scrypt; # or Bcrypt or Argon2
my $user = get_from_db();
my $owasp = Password::OWASP::Scrypt->new(
# optional
hashing => 'sha512',
# Optional
update_method => sub {
my ($password) = @_;
$user->update_password($password);
return;
},
);
# SEE ALSO
- [Password::OWASP::Argon2](
https://metacpan.org/pod/Password::OWASP::Argon2)
- [Password::OWASP::Scrypt](
https://metacpan.org/pod/Password::OWASP::Scrypt)
- [Password::OWASP::Bcrypt](
https://metacpan.org/pod/Password::OWASP::Bcrypt)
- [OWASP cheatsheet for password storage](
https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Password_Storage_Cheat_Sheet.md)
- [OWASP cheatsheet for authentication storage](
https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Authentication_Cheat_Sheet.md)
- [Authen::Passphrase](
https://metacpan.org/pod/Authen::Passphrase)
- [Authen::Passphrase::Argon2](
https://metacpan.org/pod/Authen::Passphrase::Argon2)
- [Authen::Passphrase::Scrypt](
https://metacpan.org/pod/Authen::Passphrase::Scrypt)
- [Authen::Passphrase::BlowfishCrypt](
https://metacpan.org/pod/Authen::Passphrase::BlowfishCrypt)