[php] MD5 wachtwoord beveiliging werkt niet *

Pagina: 1
Acties:
  • 175 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • M4RTiN
  • Registratie: Augustus 2000
  • Laatst online: 24-11-2024
Hallo ik heb een userbase en een login file
alles werkte met plain password maar ik wou graag over naar MD5 vanwege veiligheid

dus ik deed op mn mysql DB
update gebruiker set wachtwoord MD5(wachtwoord)
en ja het werkte, alles was encrypt

ik denk het inloggen word simpel, gewoon de invoerveld ook even omzetten naar MD5

maar wat blijkt nou met inloggen? de md5 string die php genereerd is veel langer dan de mysql ze heeft

ik heb het nu opgelost door in de login.php de md5string te laten substr te doen naar 10 tekens zoals ze ook in de DB staan, is dit goed? en hoe moet ik nu te werk gaan met toekomstige users die gaan registreren?

maarja nu ik hier toch een topic heb, nog even een vraag erbij
ik las laatst iets van addslashes, is dat ook van belang voor veiligheid?

Acties:
  • 0 Henk 'm!

  • KorZijl
  • Registratie: December 2002
  • Laatst online: 30-11-2021

KorZijl

errare humanum est

Staat je kolom wachtwoord in de tabel misschien op minder dan 32 karakters?

Acties:
  • 0 Henk 'm!

  • M4RTiN
  • Registratie: Augustus 2000
  • Laatst online: 24-11-2024
och shitzooi!! dat is het natuurlijk :(

Acties:
  • 0 Henk 'm!

  • M4RTiN
  • Registratie: Augustus 2000
  • Laatst online: 24-11-2024
oke mn fout is hersteld, op hoeveel tekens zal ik mn DB zetten ?

Acties:
  • 0 Henk 'm!

Verwijderd

32 he :)

Acties:
  • 0 Henk 'm!

  • M4RTiN
  • Registratie: Augustus 2000
  • Laatst online: 24-11-2024
staat dat altijd vast met MD5?

oke en dan nog mn 2 laatste vragen...

hoe kan ik zon gecodeerde wachtwoord weer omzetten naar leesbaar text uit de DB

en nog ff dat over addslashes, dat zou veilig zijn met inloggen maar hoe pas ik dat toe?

Acties:
  • 0 Henk 'm!

  • KorZijl
  • Registratie: December 2002
  • Laatst online: 30-11-2021

KorZijl

errare humanum est

MD5 = 2^5 = 32 (altijd) ;)

En MD5 is niet terug te coderen. Dat is juist de kracht ervan. Je moet de ongecodeerde waarde met dezelfde sleutel coderen en dat resultaat gaan vergelijken met de MD5-waarde in je DB

Acties:
  • 0 Henk 'm!

  • dawuss
  • Registratie: Maart 2001
  • Laatst online: 10-07 16:50

dawuss

gadgeteer

MD5 is volgens mij een onomkeerbare encryptie, daar er een vaste (onbekende) key gebruikt wordt. Correct me if I'm wrong :)
Waarom gebruik je trouwens niet de password() functie?

micheljansen.org
Fulltime Verslaafde Commandline Fetisjist ©


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 20:50
addslashes zet een \ voor een single,dubbele kwoot, backslash en nul.

gebruikt:
$geslashed = addslashes($nognietgeslashed);

Acties:
  • 0 Henk 'm!

  • M4RTiN
  • Registratie: Augustus 2000
  • Laatst online: 24-11-2024
dus het is niet slim om de wachtwoord in de DB te coderen?

ik ben nu een beetje in de war :S

Acties:
  • 0 Henk 'm!

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 17-09 20:43
Je zet MD5 password in je database, deze is niet te "decrypten".
ALs iemand invulformuliertje opstuurt, zet jij dat wachtwoord (md5("$string");) in MD5, en dan if ($dbPassword == $ingevuldePassword) ben je erdoorheen.

Acties:
  • 0 Henk 'm!

  • cobratbq
  • Registratie: Maart 2001
  • Laatst online: 17-12-2015
Als je later terug wilt kijken naar wat het wachtwoord is, is het niet zo slim. Als jij zegt van, ze vullen dat eens in en dan moeten ze het maar onthouwen, dan kun je gerust MD5 gebruiken.

One ring to rule them all, one ring to find them, one ring to bring them all, and in darkness bind them...


Acties:
  • 0 Henk 'm!

Verwijderd

MD5 is geen encryptie, het is een hash. De MD5 string bevat het originele wachtwoord dus niet meer.

Acties:
  • 0 Henk 'm!

Verwijderd

dawuss schreef op 12 januari 2003 @ 20:49:
MD5 is volgens mij een onomkeerbare encryptie, daar er een vaste (onbekende) key gebruikt wordt. Correct me if I'm wrong :)
Waarom gebruik je trouwens niet de password() functie?


Er zijn wel open-source scripts voor verkrijgbaar, het werkt niet eens met een key volgens mij. Er wordt gewoon een reeks wiskundige bewerkingen uitgevoerd, die niet omkeerbaar is.

Acties:
  • 0 Henk 'm!

  • M4RTiN
  • Registratie: Augustus 2000
  • Laatst online: 24-11-2024
het is mij nu helemaal duidelijk! dank u

misschien kan iemand mij nog de functie van addslashes duidelijk maken, in combinatie met inloggen?

is dat ervoor dat het iemand tegenhoud om met een wachtwoord, de inlogprocedure te manipuleren? zo vat ik het iig

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 11-09 11:19

chem

Reist de wereld rond

voorbeeld:
password ingetypt door gebruiker: abc';update users set password=md5('abc');
je query bv: update users set password='$abc' where user='m4rt1n';
vat je de quotes al? :)
addslashes zou er van maken:
update users set password='abc\';update users set password=md5(\'abc\');' where user='m4rt1n';

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 14:09

Kaastosti

Vrolijkheid alom!

Voor zover ik had begrepen is het inderdaad daarvoor. Zodat mensen niet in bijvoorbeeld de password string nog eens met html/php code kunnen gaan rommelen.

Het coderen in MD5 heb ik eindelijk ook helemaal door.. en ik kwam in het begin op hetzelfde probleem als jij :) Even database aanpassen en het werkte weer.

Als mensen hun wachtwoord vergeten.. jammer dan, verzin maar een nieuwe en encode die opnieuw. Zo heb ik het in ieder geval gedaan. Je zou eventueel ook base_64_encode en base_64_decode kunnen gebruiken met bijvoorbeeld een extra toegevoegde string die vast staat op de server en gebruikers niet weten.

Als je die extra string niet wee kun je ook niet decoden. Het is uiteraard niet zo veilig als MD5 en ik weet ook niet of het wel een geschikte functie is voor wachtwoorden, maar ik heb er ook mee zitten spelen :)

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


Acties:
  • 0 Henk 'm!

  • M4RTiN
  • Registratie: Augustus 2000
  • Laatst online: 24-11-2024
tnx ik weet genoeg!! :)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker



uhm ja, leuke berekening... 20 + 12 is ook 32
Het is idd 32, maar hoe kom jij aan 25 :? Die 5 is iig niet de 5 in MD5. De 5 is slechts de versie: Message Digest #5. En dat is de opvolger van, jawel, MD4 (die ook 128 bits is) :)

Verwijderd schreef op 12 January 2003 @ 22:03:

Er zijn wel open-source scripts voor verkrijgbaar, het werkt niet eens met een key volgens mij. Er wordt gewoon een reeks wiskundige bewerkingen uitgevoerd, die niet omkeerbaar is.


Het werkt wel met een 'key', maar dat is zeg maar de beginwaarde van de 128 bits uitkomst. In de documentatie over MD5 staat een waarde van ik geloof 01234567 - 89abcdef - fedcba98 - 76543210. Dus als je deze waarde gebruikt dan heb je de officiele MD5, maar je kunt natuurlijk ook gewoon een andere waarde kiezen, waardoor er een totaal andere hash uit komt
Kaastosti schreef op 13 januari 2003 @ 00:18:
Voor zover ik had begrepen is het inderdaad daarvoor. Zodat mensen niet in bijvoorbeeld de password string nog eens met html/php code kunnen gaan rommelen.

Het coderen in MD5 heb ik eindelijk ook helemaal door.. en ik kwam in het begin op hetzelfde probleem als jij :) Even database aanpassen en het werkte weer.

Als mensen hun wachtwoord vergeten.. jammer dan, verzin maar een nieuwe en encode die opnieuw. Zo heb ik het in ieder geval gedaan. Je zou eventueel ook base_64_encode en base_64_decode kunnen gebruiken met bijvoorbeeld een extra toegevoegde string die vast staat op de server en gebruikers niet weten.

Als je die extra string niet wee kun je ook niet decoden. Het is uiteraard niet zo veilig als MD5 en ik weet ook niet of het wel een geschikte functie is voor wachtwoorden, maar ik heb er ook mee zitten spelen :)
het idee van een hashed wachtwoord is dat het wachtwoord nergens staat, en er dus ook niets gekraakt kan worden om achter een wachtwoord van iemand te komen. Als jij dan een een of andere encryptie gebruikt is het wachtwoord ook te achterhalen. Misschien wat moeilijker voor krakers, maar niet voor de maker van het systeem oid.

En dan nog iets, base_64_encode is geen encryptie, het is alleen een systeem om 8-bits strings om te zetten naar 6-bits strings door alleen gebruik te maken van 64 leesbare tekens (a-z, A-Z, 0-9, = en /), zodat ze gebruikt kunnen worden in text-streams zoals bijvoorbeeld e-mail. Dus als jij dit gebruikt samen met een extra toegevoegde string dan kan het nog steeds gedecodeerd worden, alleen krijg je de uitkomst met de toegevoegde string. Dat valt voor 1 wachtwoord misschien niet op, maar als je 3 van die wachtwoorden decodeerd en er zit in alle 3 dezelfde string kun je ook wel verzinnen dat dat er dus niet bij hoort :)

.edit: titel trouwens ook wat zinniger gemaakt

[ Voor 78% gewijzigd door .oisyn op 13-01-2003 01:32 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • CodeVision
  • Registratie: Juni 2002
  • Laatst online: 16-09 08:13
.oisyn schreef op 13 January 2003 @ 01:00:
En dan nog iets, base_64_encode is geen encryptie, het is alleen een systeem om 8-bits strings om te zetten naar 6-bits strings door alleen gebruik te maken van 64 leesbare tekens (a-z, A-Z, 0-9, = en /), zodat ze gebruikt kunnen worden in text-streams zoals bijvoorbeeld e-mail. Dus als jij dit gebruikt samen met een extra toegevoegde string dan kan het nog steeds gedecodeerd worden, alleen krijg je de uitkomst met de toegevoegde string. Dat valt voor 1 wachtwoord misschien niet op, maar als je 3 van die wachtwoorden decodeerd en er zit in alle 3 dezelfde string kun je ook wel verzinnen dat dat er dus niet bij hoort :)
bij base64 encoding zijn de laatste 2 'tekens' + en /, niet = en /.
== en = worden gebruikt om aan te geven dat de laatste groep respectievelijk 8 of 16 bits bevatte.

"I do not fear computers, I fear lack of them"


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

yup klopt helemaal, had ik me even in vergist :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

RedHat schreef op 12 January 2003 @ 21:57:
Je zet MD5 password in je database, deze is niet te "decrypten".
ALs iemand invulformuliertje opstuurt, zet jij dat wachtwoord (md5("$string");) in MD5, en dan if ($dbPassword == $ingevuldePassword) ben je erdoorheen.
Over het algemeen concatenate je ook nog ff de username erbij, bijv. storedhash = md5(username + password). Op deze manier voorkom je dat 2 gebruikers stomtoevallig hetzelfde password hebben en dat vervolgens iemand herkent dat ze dezelfde hash in de DB hebben zitten. Met username erbij is ie (almost) guaranteed unique.

En bij een challenge-response mechanisme pak je een timestamp erbij, maja dat is hier niet aan het handje :)

Professionele website nodig?

Pagina: 1