Autor Zpráva
Vilak
Profil
Zdarec. Mám registraci a v ní 2 pole pro hesla. Tato hesla zahashuju pomocí password_hash, ale nerovnají se pak. Jakto?

Code je samozřejmě zkrácený a je vyjmutý pouze syntax pro hesla.
$password1 = htmlspecialchars(trim($_POST['password1']));
$password2 = htmlspecialchars(trim($_POST['password2']));

$password1 = password_hash($password1, PASSWORD_DEFAULT);
$password2 = password_hash($password2, PASSWORD_DEFAULT);
Četl jsem, že se na to má jaksi uplatnit password_verify, ale má angličtina je bídná a bohužel to nedokážu nastudovat.
Předem děkuji za odpovědi.
juriad
Profil
Vilak:
Při registraci ověřuj, že $_POST['password1'] == $_POST['password2']
Do databáze ulož password_hash($_POST['password1']).
Při kontrole zkontrolu, že password_verify($_POST['password'], $user['hash']) je true.

password_hash vrátí vždy jinou hodnotu. Je to záměr, protože k samotnému heslu ještě přilepí náhodnou sůl.


trim u hesla může být užitečný, ale raději bych heslo ponechal přesně tak, jak jej uživatel zapsal, včetně mezer.
htmlspecialchars je ale úplně blbost. Heslo přece nikdy nebudeš vypisovat do HTML. Dokonce jediné, co s ním uděláš, je, že zkontroluješ jeho vlastnosti (osobně bych kontroloval jen neprázdnost a v JS uživateli napověděl, jak je silné) a předáš funkci password_hash.
Vilak
Profil
Áha, už chápu. Díky. Zkusím a myslím, že vyřešeno. :)
visionic
Profil *
jeste bych udělal počet znaků minimum.
Keeehi
Profil
visionic:
jeste bych udělal počet znaků minimum.
Máš k tomu nějaký rozumný důvod? Pokud si uživatel myslí že třeba jednoznakové heslo je dostatečně bezpečné heslo tak OK, já mu v tom bránit nebudu.
Třeba moje hesla obsahují jen malé znaky abecedy a číslice. Ale jsou mnohem bezpečnější než hesla která používají lidé na stránkách které je nutí třeba do velkých malých písmen, čísel a speciálních znaků.
Martin2
Profil *
Keeehi:
Pokud si uživatel myslí že třeba jednoznakové heslo je dostatečně bezpečné heslo tak OK, já mu v tom bránit nebudu.
Tady hodně záleží na zaměření aplikace/webu. Povědomí o datové bezpečnosti je u laické veřejností bídné, nějaká politika síly hesel může být na místě. Je samozřejmě dobré, když ta politika zohledňuje skutečnou sílu (entropii) hesla a nevyžaduje zbytečně nesmysly typu „heslo musí obsahovat jedno řecké písmeno a severskou runu“.

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: