Goedeavond 
Ik ben al jaren bezig met het maken van systemen/systeempjes in PHP i.c.m. MySQL. Nu is het zo dat vroeger md5 hashing de standaard was voor password encryption, maar niet veel later was dat al sha1.
Nu heb ik een lange tijd geen systemen meer gemaakt waarbij er een database tabel komt met gegevens van leden. Omdat je de laatste tijd steeds meer leest over het goed encrypten van passwords ben ik me hier natuurlijk weer in gaan verdiepen. Eigenlijk komt daar dus uit naar voren dat bcrypt op basis van blowfish tegenwoordig de standaard moet zijn.
Hier moet je een salt bij opgeven als je een plaintext wachtwoord wil encrypten. Nu is dat op zich logisch, maar ik zit een beetje dubbel met de implementatie hiervan. Ik zie in de meeste (eigenlijk alle) voorbeelden dat de salt per gebruiker anders is, maar die salt moet dan ook in de database worden opgeslagen.
Feitelijk zit je dan met zoiets:
Dus voor zover ik begrijp sla je de $salt en de $encrypted op in je database.
Aangezien het juist de database is, die het meest wordt binnengedrongen door hackers, is het dan niet verstandig om de hash te hardcoden in je source? Dan heb je 1 salt voor iedereen, maar in theorie maakt dat niks uit omdat als iemand toegang heeft in de database, hij/zij toch al de hash heeft.
Iemand die hier ook een mening over heeft?
Ik ben al jaren bezig met het maken van systemen/systeempjes in PHP i.c.m. MySQL. Nu is het zo dat vroeger md5 hashing de standaard was voor password encryption, maar niet veel later was dat al sha1.
Nu heb ik een lange tijd geen systemen meer gemaakt waarbij er een database tabel komt met gegevens van leden. Omdat je de laatste tijd steeds meer leest over het goed encrypten van passwords ben ik me hier natuurlijk weer in gaan verdiepen. Eigenlijk komt daar dus uit naar voren dat bcrypt op basis van blowfish tegenwoordig de standaard moet zijn.
Hier moet je een salt bij opgeven als je een plaintext wachtwoord wil encrypten. Nu is dat op zich logisch, maar ik zit een beetje dubbel met de implementatie hiervan. Ik zie in de meeste (eigenlijk alle) voorbeelden dat de salt per gebruiker anders is, maar die salt moet dan ook in de database worden opgeslagen.
Feitelijk zit je dan met zoiets:
PHP:
1
2
3
4
| $random = randomstring22tekens(); $salt = '$2y$07$'.$random.'$'; $encrypted = crypt("passwordtext", $salt); |
Dus voor zover ik begrijp sla je de $salt en de $encrypted op in je database.
Aangezien het juist de database is, die het meest wordt binnengedrongen door hackers, is het dan niet verstandig om de hash te hardcoden in je source? Dan heb je 1 salt voor iedereen, maar in theorie maakt dat niks uit omdat als iemand toegang heeft in de database, hij/zij toch al de hash heeft.
Iemand die hier ook een mening over heeft?