Bcrypt
Ik wil mijn passwords in mijn database gaan encrypten met Bcrypt (omdat na veel googlen me dat het beste lijkt :p )
Maar ik vind bijna/geen voorbeelden van hoe ik dit het beste kan doen.
Heeft iemand hier meer verstand van? (password met registreren encrypted wegschrijven naar de database en password met inloggen decrypten en vergelijken.)
- Marco - op 19/12/2012 13:54:48:
Niet decrypten en vergelijken maar ook het ingevoerde password bij inloggen encrypten en vergelijken. Dus niet je password uit de database steeds weer decrypten. De methode ken ik niet, zal wel voldoende zijn tenzij je een financiele instelling bent. Zoniet dan is de eenvoudigste encryptie meestal wel voldoende.Heeft iemand hier meer verstand van? (password met registreren encrypted wegschrijven naar de database en password met inloggen decrypten en vergelijken.)
Ja ik weet er weinig/niks van maar ik wil de wachtwoorden die in de database staan encrypten dus niet tot je @abc123 bijvoorbeeld gewoon zo in de db ziet staan :p
- Marco - op 19/12/2012 14:11:46:
Klopt inderdaad en wanneer iemand probeert in te loggen dan crypt je ook die inlog (password) en vergelijk je met het password in de database. Terugcrypten of decrypten kan niet altijd dat is ook een stukje veiligheid. (afhankelijk van de gebruikte methode).Ja ik weet er weinig/niks van maar ik wil de wachtwoorden die in de database staan encrypten dus niet tot je @abc123 bijvoorbeeld gewoon zo in de db ziet staan :p
Ik raad je aan een salt en peper te gebruiken.
Op tweakers liep een heel interessant topic over paswoorden.
Zou ik daar een voorbeeld van kunnen krijgen? (het encrypten van $password met bcrypt?)
LEDfan nvt op 19/12/2012 14:20:13:
Op tweakers liep een heel interessant topic over paswoorden.
Heel leuk dat je dit vermeldt, maar zonder een link erbij naar het betreffende topic heeft deze opmerking niet zo heel veel toegevoegde waarde... ;)
Op phphulp is ook een hele discussie over geweest en links staat onder php scripts een voorbeeld (hash bcrypt class encryption). Zie eventueel ook het script wat daarboven genoemd wordt (pbkdf2).
Heeft iemand daar een voorbeeldje van dan? of een goede link :)
Onderzoek ook wat je nodig hebt. Er zijn eindeloze developer discussies over weetikhoeveelbits encryptie en dan ook nog zout, peper en mosterd eroverheen. Developers slaan vaak onnodig door en hoe moeilijker hoe beter. Bcrypt is een prima niet al te snelle veilge methode en zorg altijd dat je na drie pogingen de user blokkeert. Hiermee voorkom je brute force die met een klein clustertje al snel 10 miljoen pogingen per dag kan doen.
John D op 19/12/2012 15:00:59:
en zorg altijd dat je na drie pogingen de user blokkeert
Welke user bedoel je hier? Bedoel je het ip-adres waarmee de bruteforce aanval wordt gedaan? Of bedoel je letterlijk de user waarvan men het wachtwoord probeert te achterhalen?
En wat nu als een hacker bij iedere poging een ander ip-adres gebruikt, en ook een andere username probeert? Dat kun je moeilijk tegengaan denk ik?
Gewijzigd op 19/12/2012 15:20:32 door Chris PHP
Ja, maar 2x fout bij wie? Als de hackpoging van hetzelfde ip-adres komt kan dat, maar wat als één hacker meerdere ip-adressen gebruikt?
Beide situaties controleren, dus zowel ip als username na 2x. Jij weet zelf ook heel goed dat 100% tegengaan onmogelijk is. Dus ja om door te vissen zal weinig nut hebben he ;-)
Ozzie PHP op 19/12/2012 15:14:12:
Ja, ik bedoel de user(inlognaam) blokkeren. ip-adres blokkeren is weinig zinvol, dat hebben hackers/bots allang voorzien. Hoezo probeert de hacker bij iedere poging een andere inlognaam? 99,9999% van die inlognamen zal niet bestaan, hoef je geen actie op te ondernemen, niks. Een hacker zal voorkeuren hebben voor admin, administrator, beheer, beheerder, maint, maintenance, enzovoort en daar moet je zorgen dat hij uberhaupt mislukt. OS usernames hebben we het al eerder over gehad. root login disablen. Ik heb bekende misbruiklanden (waaronder oostblok) ook in iptables uitgesloten. Mijn doelgroep is in feite nederland en de nederlander die in een oostblokland mijn site wil bekijken heeft pech.John D op 19/12/2012 15:00:59:
Welke user bedoel je hier? Bedoel je het ip-adres waarmee de bruteforce aanval wordt gedaan? Of bedoel je letterlijk de user waarvan men het wachtwoord probeert te achterhalen? En wat nu als een hacker bij iedere poging een ander ip-adres gebruikt, en ook een andere username probeert? Dat kun je moeilijk tegengaan denk ik? en zorg altijd dat je na drie pogingen de user blokkeert
Edit:
On topic weer @Marco: bcrypt is een prima methode en blokkeren na 2 of drie pogingen is aan te raden. Eventueel ook ipnummer maar ik ben tegenstander daarvan. Gebruikers hebben tegenwoordig vaak meer dan 1 ipnummer. Beetje zinloze administratie.
Gewijzigd op 19/12/2012 15:38:46 door John D
dus wat moet ik met dit vervangen? @Chris ik heb ook naar jou linkje gekeken maar ik kom er gewoon niet uit :S
$password = $_POST["password"];
if($rij["password"] == $password)
Gewijzigd op 19/12/2012 15:35:25 door - Marco -
- Marco - op 19/12/2012 15:34:56:
Voorbeelden op: http://phpmaster.com/why-you-should-use-bcrypt-to-hash-stored-passwords/Hoe zou ik dan het wachtwoord kunnen encrypten?
dus wat moet ik met dit vervangen? @Chris ik heb ook naar jou linkje gekeken maar ik kom er gewoon niet uit :S $password = $_POST["password"];
if($rij["password"] == $password)
dus wat moet ik met dit vervangen? @Chris ik heb ook naar jou linkje gekeken maar ik kom er gewoon niet uit :S $password = $_POST["password"];
if($rij["password"] == $password)
Ozzie PHP op 19/12/2012 14:31:43:
Heel leuk dat je dit vermeldt, maar zonder een link erbij naar het betreffende topic heeft deze opmerking niet zo heel veel toegevoegde waarde... ;)
LEDfan nvt op 19/12/2012 14:20:13:
Op tweakers liep een heel interessant topic over paswoorden.
Heel leuk dat je dit vermeldt, maar zonder een link erbij naar het betreffende topic heeft deze opmerking niet zo heel veel toegevoegde waarde... ;)
Nee dat is waar, maar ik heb gezocht naar het topic en niet gevonden. Misschien dat de TS het wel vind?
Code (php)
Toevoeging op 19/12/2012 15:44:49:
@marco,
Geen variabel tussen " " zetten, dan wordt het platte tekst (op je regel 4 in crypt();)
Gewijzigd op 19/12/2012 15:45:13 door Chris PHP