Autor Zpráva
Jirin
Profil
Zdravím,
chci se poptat, jak se nejlépe dá vyřešit změna hashovacího algoitmu. Měl jsem starší web, v kterém bylo heslo ukládáno klasicky pomocí md5(password), což příliš bezpečné není. Pak jsem si přečetl něco o soli, tak jsem chtěl přidat solení, jenže už jsem nepochopil, že solení má být pro každý záznam jiné, tak jsem dal pevnou sůl a ještě, abych to převedl všem, tak mě nenapadlo nic jiného než md5(md5(password) . $salt) - double hashing asi taky nebude úplně ideální.

Nicméně teď bych chtěl přejít na něco, kde budu mít dynamický salt + nějaký bezpoečnější algoritmu, jak to nejlépe vyřešit, abych samozřejmě neodřízl staré uživatele.
Jan Tvrdík
Profil
Jirin:
Použij funkci crypt s blowfish hashováním.

Migraci je nejsnazší založit na délce hashe, takže něco jako

function authenticate($username, $password)
{
    $user = $this->getUserByUsername($username);
    
    if (strlen($user->password) === 32) { // md5 hash má 32 znaků
        if (oldHash($password) === $user->password) {
            $this->updateUserPassword($username, newHash($password));
            return true;
        } else {
            return false;
        }
    
    } else {
        return (newHash($password) === $user->password);
    }
}
Jirin
Profil
Díky za reakci, či-li zkrátka když se bude přihlašovat někdo se starým heslem, tak ho příhlásíma změním na nové v databázi. To zní dobře.

Jinak místo crypt asi spíš použiju, password_hash, sice je to pro PHP 5.5 až, nicméně na githubu je password_compat, který umožňuje to samé u php < 5.5

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: