PHP crypt vraag

Gestart doorCalvin22 reacties83 weergaven

23 berichten · pagina 1 van 2

Calvin

Lid · Topicstarter

Berichten
907
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hallo allemaal,

Ik ben begonnen met een inlogsysteem te maken.
En ik ben gelijk tegen iets aangebotst.

Als er mensen zijn die zich willen aanmelden, dan wil ik dat het wachtwoord encrypt wordt opgeslagen in de database. Hiervoor gebruik ik crypt();, dit werd aangeraden door PHP.net omdat bijv. MD5(); niet veilig of goed genoeg zou zijn. Ik merkte ook dat bij crypt(); de hash elke keer veranderd. Zoals

[COLOR= #0000BB]<?php
$wachtwoord[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/crypt"]crypt[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"blabla"[/COLOR][COLOR= #007700]);[/COLOR]

[URL="http://www.php.net/echo"]echo[/URL] [COLOR= #0000BB]$wachtwoord[/COLOR][COLOR= #007700];[/COLOR]
?>


Elke keer als ik refresh, dan veranderd de hash.
Mijn probleem is nu, als een gebruiker zich zou aanmelden.. dan zou de hash toch anders zijn als hij zich een andere keer weer zou inloggen? Dus dan zou de hash bij het aanmelden dus anders zijn bij het inloggen, omdat de hash dus elke keer veranderd. Hoe kan ik er dan voorzorgen dat hij dan gewoon kan inloggen zonder het probleem dat de hash niet hetzelfde is.

Hopelijk begrijpen jullie me,

Alvast bedankt!
0
Berichten
4.912
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
md5 kan niet veilig zijn maar
md5(sha1());
wel dus gebruik dan gewoon.

[COLOR= #0000BB]<?php[/COLOR]
[COLOR= #007700]function[/COLOR] safe[COLOR= #007700]([/COLOR][COLOR= #0000BB]$pass[/COLOR][COLOR= #007700]) {[/COLOR]
   [URL="http://www.php.net/return"]return[/URL] [URL="http://www.php.net/md5"]md5[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/sha1"]sha1[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$pass[/COLOR][COLOR= #007700]));
}[/COLOR]
?>
0
Berichten
3.112
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Inderdaad, dit is niet mogelijk met crypt() aangezien je hem wel op kunt slaan in de database, maar de kans dat je precies dezelfde terug krijgt bij een latere crypt() is klein. Gebruik gewoon een random iets zoals dit:

[COLOR= #0000BB]<?php
$pass[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]test[/COLOR][COLOR= #007700];[/COLOR]
[COLOR= #0000BB]$salt[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]DFGvsdghtfgh576!hvgbjewd$gvc1iy5hdf!hbvggthgYHb[/COLOR][COLOR= #007700];[/COLOR]
[COLOR= #0000BB]$pepper[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]defrgyugf@$$3vcghj!~#r[/COLOR][COLOR= #007700];[/COLOR]
[URL="http://www.php.net/echo"]echo[/URL] [URL="http://www.php.net/sha1"]sha1[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/sha1"]sha1[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$salt[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$pepper[/COLOR][COLOR= #007700].[/COLOR][URL="http://www.php.net/md5"]md5[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$pass[/COLOR][COLOR= #007700]).[/COLOR][COLOR= #0000BB]$pepper[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$salt[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$pepper[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$pepper[/COLOR][COLOR= #007700].[/COLOR][URL="http://www.php.net/sha1"]sha1[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$pass[/COLOR][COLOR= #007700]).[/COLOR][COLOR= #0000BB]$salt[/COLOR][COLOR= #007700]));[/COLOR]
?>


Grote jongen als je die kraaktnerd
(Deze is natuurlijk wel overdreven, maar toch wink)
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Ik raad je aan om de hash()-functie te gebruiken. Je kan dan zelf kiezen welk algoritme je wilt gebruiken.

hash(sha512, mijnwachtwoord);


Meerdere hashes over elkaar raad ik echt AF.

Ook is het gebruik van een zogeheten salt aan te raden:

$salt = "K743&jm30L-=3;/Lbhgd7"
hash(sha512, mijnwachtwoord . $salt);


~ Rik
0
Berichten
3.112
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rik schreef:
Ik raad je aan om de hash()-functie te gebruiken. Je kan dan zelf kiezen welk algoritme je wilt gebruiken.
hash(sha512, mijnwachtwoord);


Meerdere hashes over elkaar raad ik echt AF.

Ook is het gebruik van een zogeheten salt aan te raden:

$salt = "K743&jm30L-=3;/Lbhgd7"
hash(sha512, mijnwachtwoord . $salt);


~ Rik

Leg eens uit smile?
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Gamedealer schreef:
Eerdere citaten tonen
Rik schreef:
Ik raad je aan om de hash()-functie te gebruiken. Je kan dan zelf kiezen welk algoritme je wilt gebruiken.
hash(sha512, mijnwachtwoord);


Meerdere hashes over elkaar raad ik echt AF.

Ook is het gebruik van een zogeheten salt aan te raden:

$salt = "K743&jm30L-=3;/Lbhgd7"
hash(sha512, mijnwachtwoord . $salt);


~ Rik
Leg eens uit smile?

Performancegewijs is het onnodig, bovendien gaan er gaan geruchten dat het juist onveiliger is.
0
Berichten
3.112
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Oké, dan houd ik het bij salt en wat peperclown
0
Berichten
9.969
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rik schreef:
Performancegewijs is het onnodig, bovendien gaan er gaan geruchten dat het juist onveiliger is.
Zou je daarvan een bron kunnen plaatsen? Het klinkt mij als poep in de oren..
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Naja, het maakt op zich niet heel veel uit, het is bijna verwaarloosbaar verschil.

Ikzelf gebruik 3 dingen:
- Wachtwoord
- Salt
- User-specifieke salt

@ Robbert; Performancegewijs hoef ik denk ik niet uit te leggen. Onveiliger druf ik geen uitspraak over te doen, vandaar gerucht. Ik heb dat ook via-via een keertje gehoord.

Maar je moet maar zo zien: Het systeem / de hashing methode is zo sterk als zijn zwakste schakel. Je kunt nog zoveel verschillende manieren van beveiliging inbouwen, maar als een hacker je systeem binnen kan komen ben je hoe dan ook de zak.
0
Calvin

Lid · Topicstarter

Berichten
907
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
@Rik

Is sha256 ook goed i.p.v. sha512?
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Ja hoor. sha512 is gewoon een 2x zo lange hash als sha256. 128 tekens ten opzichte van 64 tekens.
0
Berichten
3.074
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rik schreef:
Ik raad je aan om de hash()-functie te gebruiken. Je kan dan zelf kiezen welk algoritme je wilt gebruiken.
hash(sha512, mijnwachtwoord);


Meerdere hashes over elkaar raad ik echt AF.

Ook is het gebruik van een zogeheten salt aan te raden:

$salt = "K743&jm30L-=3;/Lbhgd7"
hash(sha512, mijnwachtwoord . $salt);


~ Rik

Hashes zijn inderdaad ook handig, ze zorgen ervoor dat symbolen worden vervangen door random letters en cijfers.

Is pepper een alternatief voor salt?
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Joeyl schreef:
Is pepper een alternatief voor salt?
Pepper en salt zijn precies hetzelfde. Salt is een gebruikelijke term om een willekeurige tekenreeks aan te duiden die samen met het wachtwoord gehashed wordt. "pepper" is hierbij dan een soort parodie omdat je dan Zout en Peper hebt op je maaltijd (= je wachtwoord).
0
Berichten
3.074
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rik schreef:
Eerdere citaten tonen
Joeyl schreef:
Is pepper een alternatief voor salt?
Pepper en salt zijn precies hetzelfde. Salt is een gebruikelijke term om een willekeurige tekenreeks aan te duiden die samen met het wachtwoord gehashed wordt. "pepper" is hierbij dan een soort parodie omdat je dan Zout en Peper hebt op je maaltijd (= je wachtwoord).
Dus je kan simpelweg een pepper toevoegen aan jouw encryptie?

Zoals:

$pepper = "&*@($)%!}{]["
$salt = "K743&jm30L-=3;/Lbhgd7"
hash(sha512, $pepper . mijnwachtwoord . $salt);


// Stommefoutedit clown
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Pepper is geen officiele benaming. Het is gewwon een tweede salt.

$pepper = "&*@($)%!}{]["
$salt = "K743&jm30L-=3;/Lbhgd7"
hash(sha512, $pepper . mijnwachtwoord . $salt);
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren