Bcrypt
Pagina: « vorige 1 2 3 4 5 volgende »
En ik ben nu jou voorbeeld aan het proberen ( niet de salt)
werkt het dan hetzelfde met registreren?
Dit:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$sql = "INSERT INTO `usertemp` ( `email`,
`password` VALUES ('".$_POST["email"]."',
'".$_POST["password"]."')";
?>
$sql = "INSERT INTO `usertemp` ( `email`,
`password` VALUES ('".$_POST["email"]."',
'".$_POST["password"]."')";
?>
Veranderen in dit?
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$sql = "INSERT INTO `usertemp` ( `email`,
`password` VALUES ('".$_POST["email"]."',
'".crypt( $_POST['password']."')";
?>
$sql = "INSERT INTO `usertemp` ( `email`,
`password` VALUES ('".$_POST["email"]."',
'".crypt( $_POST['password']."')";
?>
Toevoeging op 19/12/2012 16:07:25:
Chris NVT op 19/12/2012 15:43:47:
Ik heb dit ff geprobeerd en ik laat $password echo'en om het te checken of het wel klopt maar hij geef elke keer een andere string
Voorbeelden van 3x inloggen:(ja met hetzelfde pw elke keer :p )
$1$OhMixv94$p0sJnx0HHBXmfeKJnDTTm/
$1$h4yIzLMG$3RzCbJH.h.I/uEauE4lNg1
$1$VaK9p7em$C2l1JC7rgDhvIu0KbcDwk1
en mocht je benieuwd zijn naar het wachtwoord het wachtwoord is "test" ;)
Gewijzigd op 19/12/2012 16:08:13 door - Marco -
Hoe maak je je salt/pepper? Die moet niet dynamisch zijn!
Gewijzigd op 19/12/2012 16:38:19 door - Marco -
Maak van je wachtwoord maar eens ikhouvanhollandsestamppot en zal het aantal karaters van je HASH even veel zijn in mijn voorbeeld.
en hoe difineer ik dan welke ik wil gebruiken? ( ik wil bcrypt gebruiken )
en btw als ik als $salt zoiets pak $1$VaK9p7em$C2l1JC7rgDhvIu0KbcDwk1 dan krijg ik dus wel zon lange string terug: $1$VaK9p7em$C2l1JC7rgDhvIu0KbcDwk1
Gewijzigd op 19/12/2012 16:43:49 door - Marco -
Ik ben van mening dat je voor een foutieve login, altijd maar één standaard melding moet teruggeven zoals: 'Login failed' of iets dergelijks, ook als een gebruiker reeds geblokkeerd is. Dit om hackers vooral geen aanvullende info te verstrekken en ze zodoende langer op een dood spoor te houden.
@Marco...voor bcrypt moet je blow_fish opgeven. Let wel dat niet iedere php versie dat ondersteund, php 5.3 doet het dat wel, maar die wil je waarschijnlijk ook wel gebruiken omdat 5.2 end of life zou moeten zijn.
Toevoeging op 19/12/2012 18:25:47:
Ik zou overigens een bestaand framwork gebruiken zoals phpass, dan weet je zeker dat de implementatie juist is..
Gewijzigd op 20/12/2012 10:46:25 door - Marco -
Ja,dat is zeker een goede optie. je moet dan wel de salt aan je gesalte wachtwoord vastzetten als je zorgt dat je salt een vaste size heeft, kun je met substr de salt retrieven en daarmee het opgegeven wachtwoord opnieuw te hashen (want dat is wat je doet) en te vergelijken of deze de zelfde uitkomst geeft :)
Btw enig idee waarom dit niet werkt?
Ik wou $salt echo'en om te kijken of het echt random was etc :)
Wat is op dit moment je hele code?
en hoe vul je die salt dan?
Niet. ( dan is die toch random? )
- Marco - op 20/12/2012 10:34:05:
Niet. ( dan is die toch random? )
Nee, alleen $salt zal het een niet gedeclareerde variabel zijn. Wil je een random id dan gebruik je bijvoorbeeld rand().
Maar je snapt hopelijk wel dat je met een random NOOIT meer het zelfde krijgt en dus geen check/vergelijk kunt doen in je db he? Want je eerste random salt zal niet het zelfde zijn dan wanneer je hem er nog een keer dooheen haalt.
Je salt hoeft niet random te zijn, elk wachtwoord is standaard gehashed, met een salt zorg je er gewoon voor dat het meer is dan alleen test. Dus bijvoorbeeld testGHkjh4539087KL
is the way to go: de 2a geeft aan dat het gaat om blowfish_encrypt gaat welke je moet hebben, 07 is de cost die je opgeeft waarmee je de functie trager of sneller kan laten gaan.
Als de Gebruiker dan inlogd word die salt uit de databsae gehaald (van de user die die heeft ingevuld), het ingevulde wachtwoord van gebruiker "Harry" zal dan ge'encrypt worden met dezelfde salt die in de database bij de gebruiker "Harry" staat.
@Henze ok maar dan is de salt niet random meer? Maar goed dan gebruik ik die manier wel.
Maakt het iets uit hoelang die $salt dan is?
bijvoorbeeld:
$2a$07$usesomesillystringforsalt$
of
$2a$07$sueTjzE21346asDGJasdgASdyew@#%02132asdsag$
Gewijzigd op 20/12/2012 10:49:41 door - Marco -
Als je dus je salt random wilt maken, maak je gebruik van rand() zoals ik eerder al zei, anders is het gewoon een niet gedeclareerde variabel die een notice geeft.
Als je in een config file je $last declareerd aan een lange random string, en die overal gebruikt voorkom je dictionary attacks.
Want zoals ik eerder al uitlegde zal je wachtwoord geen test zijn (wat uiteraard in een dictionary db zal staan), maar zal het worden testGHKjl43350&*%dfgsd;k (wat uiteraard niet in een dictionary db zal staan).
Php code is niet te zien vanuit de browser, dit wordt op de server uitgevoerd. Dus willen mensen je $salt hebben, zullen ze bijvoorbeeld je ftp moeten hacken om je config.php te kunnen lezen.
Het is aan jezelf wat je wil, maar ze komen sneller achter je db records (door wellicht slechte escapes) dan dat ze de informatie uit je config.php zullen halen. Vooral als je dan de config.php ook nog eens buiten je root plaatst.
Toevoeging op 20/12/2012 10:54:14:
@Chris ok ja een random salt leek me veiliger maar ik ben van gedachten veranderd en een vaste $salt is net zo goed.
o.a. ben ik van gedachten veranderd door dit artikel:
http://www.infosecisland.com/blogview/4125-Password-Hashing-Salt-Should-It-Be-Random.html
- Marco - op 20/12/2012 10:51:15:
En als wat is het nut als je 07 naar 01 zet of naar 12 want bij 01 werkt die dan wel snellen maar ook veiliger? of dan juist minder veilig?
Wat bedoel je hier precies mee? Het is me niet duidelijk wat je bedoeld.
Tevens voor je eerdere reactie, Als je even de md5 hash aanhoudt.
md5 geeft altijd een output van 32 karakters. Dus of je ww nu 'a' is, of het is 'eenheeeeellaaaaangwachtwooooord', de output zal altijd 32 karakters zijn.