Gör dig själv en tjänst och använd ett standardbibliotek för att hasha dina lösenord.
Eftersom säkerheten tenderar att vara mycket mer komplicerad och med mer osynliga förvrängningsmöjligheter än de flesta programmerare skulle kunna hantera ensamma, är det nästan alltid det enklaste och säkraste (om inte det enda) tillgängliga alternativet att använda ett standardbibliotek.
Standardbiblioteket :
Ta en titt på:Bärbart PHP-lösenordshashingramverk
:phpass och se till att du använder CRYPT_BLOWFISH
algoritm om det alls är möjligt.
exempel på kod som använder phpass (v0.2):
require('PasswordHash.php');
$pwdHasher = new PasswordHash(8, FALSE);
// $hash is what you would store in your database
$hash = $pwdHasher->HashPassword( $password );
// $hash would be the $hashed stored in your database for this user
$checked = $pwdHasher->CheckPassword($password, $hash);
if ($checked) {
echo 'password correct';
} else {
echo 'wrong credentials';
}
PHPass har implementerats i några ganska välkända projekt:
- phpBB3
- WordPress 2.5+ samt bbPress
- Drupal 7-versionen, (modul tillgänglig för Drupal 5 och 6)
- andra
Det som är bra är att du inte behöver oroa dig för detaljerna, dessa detaljer har programmerats av personer med erfarenhet och granskats av många människor på internet.
Vad du än gör om du väljer 'Jag gör det själv, tack ', använd inte MD5
längre . Det är en trevlig hashalgoritm, men helt trasig av säkerhetsskäl .
Använder för närvarande krypt
, med CRYPT_BLOWFISH är bästa praxis.
CRYPT_BLOWFISH i PHP är en implementering av Bcrypt-hash. Bcrypt är baserat på Blowfish-blockchifferet och använder dess dyra nyckelinställning för att sakta ner algoritmen.
För mer information om system för lösenordslagring kan du också läsa Jeff `s blogginlägg om det:Du lagrar förmodligen lösenord felaktigt