Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Frågor och svar om password_hash och password_verify #20

Open
mosbth opened this issue Oct 6, 2022 · 0 comments
Open

Frågor och svar om password_hash och password_verify #20

mosbth opened this issue Oct 6, 2022 · 0 comments
Assignees
Labels
documentation Improvements or additions to documentation

Comments

@mosbth
Copy link
Member

mosbth commented Oct 6, 2022

Här följer frågor och svar kring lösenordshanteringen i PHP. Följande dialog är mellan två studenter i chatten.

testar att hasha ett lösenord med password_hash("test", PASSWORD_DEFAULT). kör jag echo på det så får jag en viss hashsträng, trycker jag F5 får jag en annan hashsträng. så ska det väl inte vara, eller tänker jag fel?

Värdet hashas tillsammans med ett slumpmässigt s.k. salt för att förhindra att en angripare kan identifiera lösenorden genom att i förväg beräkna hasharna för de vanligaste lösenorden. Se dokumentationen: https://www.php.net/manual/en/function.password-hash.php

mhmm jag förstår, tack! tänkte att jag kunde jämföra $hashatLösenordFrånAnvändare === $sparadHashDatabas, men man är tvungen att använda password_verify() för det.
så password_verify måste ju på något sätt avsalta och sedan jämföra hasharna.
och de hashar som kom med för testanvändarna i databasen måste ju vara avsaltade också va?

Det stämmer huvudsakligen som du tänkt, men det kompliceras lite av att saltet måste hanteras, vilket är anledningen till att de snällt nog ger oss password_verify. Värdet som lagras i databasen är inte bara hashen utan också saltet (och några andra saker). Man verifierar genom att jämföra hasharna, som du tänkt, men man måste ta det ursprungliga saltet ur databasen och använda det i hashningen för att få samma värde. (Plus andra komplikationer som man inte vill implementera själv och riskera att få fel.)

det här känns som en sak jag bara får acceptera, men förstår inte hur det salt som använts för att hasha lösenorden i databasen kan inkluderas i en 60 tecken lång hash och sen på något automagiskt sätt identifieras av password_verify för att avsalta utan att en angripare med enkelhet också kan göra exakt samma sak.
den här apan tänker nöja sig med att password_hash och password_verify existerar och fungerar för ikväll hehe

Hanteringen av hashningen försöker undvika problem som innebär att ett lösenord alltid genererar en specifik hash. Lite som i rainbow tables.

@mosbth mosbth self-assigned this Oct 6, 2022
@mosbth mosbth added the documentation Improvements or additions to documentation label Oct 6, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

1 participant