sql >> Databasteknik >  >> RDS >> Mysql

Vilken funktion ska jag använda för att hasha lösenord i MySQL?

Det är inte nödvändigtvis att du inte ska använda MD5, lika mycket är det att du inte ska använda bara MD5, eftersom detta gör dig sårbar för attacker från regnbågstabeller (en regnbågstabell är en tabell med förberäknade hashvärden - om ditt lösenord till och med är mycket vanligt eller enkelt behöver angriparen bara slå upp hashen och han känner till ditt lösenord i klartext. )

Du bör åtminstone lägga till ett salt till varje lösenord så att alla befintliga regnbågstabeller är värdelösa, vilket tvingar angriparen att skapa en helt ny regnbågstabell bara för din databas med lösenord.

Ännu bättre är att använda ett annat salt för varje lösenord i din databas, säg användarnamnet det är associerat med, så att en angripare inte ens kan generera en regnbågstabell för hela din databas och måste knäcka varje post separat.

MD5 är också en mycket snabb algoritm. Hastigheten är fienden när det kommer till cracking – ju längre tid det tar att generera en hash, desto längre tid tar det för varje försök en hackare gör. Något enkelt som att hasha klartexten 100 gånger med ett nytt extra salt varje gång skulle knappt vara märkbart (om alls) för en användare som loggar in på din webbplats, men det skulle öka tiden det tar att brute-force ett lösenord med samma 100 gånger.

Mycket, mycket mer information här:http://www.codinghorror.com/blog/ archives/000953.html



  1. SQL-frågor

  2. Oracle SQL:Förstår du beteendet hos SYS_GUID() när det finns i en inline-vy?

  3. Hur får man en radrankning?

  4. Vad är standardstorleken för en varchar2-ingång till Oracles lagrade procedur, och kan den ändras?