Avatar billede Slettet bruger
02. marts 2009 - 23:32 Der er 8 kommentarer og
1 løsning

PHP og md5

Hej, jeg er ved at prøve at lave lidt md5-halløj på mine passwords.

Jeg opretter brugere vha.:

$password = 'test'; 
$salt = "edb_1234"; // RANDOM SALT
$salted_password = md5($password . $salt); 

Jeg smider så "$salted_password;" i databasen som password.

Ok, det tricky for mig kommer, når brugeren efterfølgende vil rette sit password - hvordan ser det så ud? Jeg er i tvivl om brugen af salt igen:

$password2 = $salted_password; // DET FRA DATABASEN

$salt2 = "edb_1234"; // RANDOM SALT
$salted_password2 = md5($password2 . $salt2); 

echo $salted_password2; 


Her er "$salted_password;" ikke det samme som "$salted_password2;"
Avatar billede arne_v Ekspert
02. marts 2009 - 23:57 #1
Først MD5'er du passwordet en gang.

Og så MD5'er du det allerede MD5'ede igen.

Det skal ikke give det originale password.
Avatar billede arne_v Ekspert
02. marts 2009 - 23:58 #2
Hvis du vil validere et login så MD5'er du det password brugeren har indtastet med det allerede MD5'ede password i databasen.
Avatar billede Slettet bruger
03. marts 2009 - 00:05 #3
Hej, tak for svar. Ja - jeg tjekker ved login - om md5 af det indtastede svarer til det i databasen.

Problemet er, når brugeren vil ændre sit password i en form, der eks. består af en række ting (køn, alder, og så password):

<input type="password" name="form_password" value="<?php echo $md5_salted_password_fra_database; ?>">

Kører man så en salt på det én gang til, eller?
Avatar billede arne_v Ekspert
03. marts 2009 - 00:25 #4
Hvis bruger vil ændre password så:
- checker du det gamle password først
- derefter hasher du det nye password helt på samme måde som da han blev oprindeligt oprettet og gemmer det hashede password
- det er optional om du vil bruge samme salt eller generere et nyt
Avatar billede psychopixi Nybegynder
03. marts 2009 - 02:06 #5
Ikke fordi det har den helt store betydning, når man husker at salte sin hash, så vil jeg anbefale at du ikke bruger MD5, der er meget sårbar overfor collisions, og benytter dig af en SHA algoritme istedet.

Se mere om hvordan her:
http://dk2.php.net/manual/en/function.sha1.php
http://dk2.php.net/manual/en/function.hash-algos.php
http://dk2.php.net/manual/en/function.hash.php
Avatar billede arne_v Ekspert
03. marts 2009 - 02:51 #6
Generelt er MD5 forældet, så det ville være godt at bruge SHA-256 i stedet for.
Avatar billede Slettet bruger
03. marts 2009 - 08:41 #7
hej... ah ja...

problemet var, at jeg viste det gamle password i input-feltet:
<input type="password" name="form_password" value="<?php echo $md5_salted_password_fra_database; ?>">

Dvs siden salter et allerede saltet password, så hvis man ikke ændrede password'et i forumularen (men eks. kun ens email-adresse) - så ændrede siden alligevel ens password.

Hvis value = "" i password-feltet er der så ingen problem.

Håber jeg har fattet det rigtigt.
Avatar billede Slettet bruger
03. marts 2009 - 11:32 #8
Tak for hjælp. Svar gerne for point!
Avatar billede arne_v Ekspert
03. marts 2009 - 15:10 #9
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB