Spaßvogel: Es! Ist! Unsicher!

Beitrag lesen

Doch, die herrscht. Die PHP-API unterstützt nur bcrypt, bei dem die grundlegenden Probleme des Passwort-Hashings nicht behoben werden: bcrypt ist durch FPGAs und ASICS implementierbar, womit die Verarbeitungsgeschwindigkeit massiv steigt.

Mag sein, dass es Fortschritte gibt. Aber dank password_needs_rehash() kann man automatisch und ohne manuelles Zutun feststellen, ob der Hash der derzeit beste (implementierte) ist und das (soeben richtig eingegebene) Passwort neu hashen. Zumindest die Passwörter der aktiven Benutzer werden dann also mit dem derzeit besten (implementierten) Algorithmus gehasht gespeichert.

Im Wiki gab es mal eine Quelle, die zeigte das sehr schön:

Ein stilles Update können Sie auch durchführen: Nach einem erfolgreichen Login führen Sie folgendes aus:

if ( password_needs_rehash($hash, PASSWORD_DEFAULT) ) {
    $newHash = password_hash( $password, PASSWORD_DEFAULT );
    /* Jetzt den neuen Hash speichern! */ 
};

Bei Benutzern, die X Jahre lang nicht da waren kann man ja über eine Löschung nachdenken. Einfach das letzte erfolgreiche Login speichern... und per cronjob monatlich einmal nachsehen. Ob man dann ein Mail senden und noch eine gewisse Frist stillhalten will, den Zugang komplett löscht oder nur das Passwort (eventuell nur die mit dem schlechten Hash) ist eine Frage der Geschäftslogik, welche die Geschäftsleitung unter Beachtung aller eigenen Interessen (also auch der Compliance) und der Gesetze beantworten muss.