Toon posts:

[PHP & MYSQL] md5() inloggen

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

Verwijderd

Topicstarter
ik heb dus het volgende scriptje, bij het aanmelden wordt het ww goed in de db geschreven, alleen nu moet ik het dus hierin ook verwerken. ik struikel vooral over die $_post['

waar(en hoe) moet ik nou aangeven dat het om een md5() pass gaat :? heb veel geprobeert maar kom er niet uit :(
PHP:
1
<?if (isset($_POST['name']) && isset($_POST['pass'])) {   $result = mysql_query("SELECT * FROM users WHERE name='$_POST[name]' AND pass='$_POST[pass]'") or die("Oups! mySQL doesnt seem to work!");   if (mysql_num_rows($result) == 1) { setcookies en login is juist} Else {login is onjuist?>

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:12

Creepy

Tactical Espionage Splatterer

Kijk eens op de MYSQL website naar PASSWORD

hint: where password=PASSWORD($password.)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
oeps, ligt aan mijn invoer veld, vreemd md5() staat verkeert in mijn db :?

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Is dit zeker wat je wilt? Je wachtwoord gaat namelijk nog steeds als plaintext over het net nu, tenzij je SSL gebruikt.

Verwijderd

Topicstarter
ja dit is wat ik wil, gaat er meer om dat in de db niet alle 'pass' in plain text te zien zijn.

althans ik denk dat dit is wat ik wil :)

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op vrijdag 26 juli 2002 12:34 schreef Creepy het volgende:
Kijk eens op de MYSQL website naar PASSWORD

hint: where password=PASSWORD($password.)
PASSWORD functie is niet gelijk aan MD5. Daar heb je tenslotte de MD5 functie voor... :)

[url="http://www.mysql.com/doc/M/i/Miscellaneous_functions.html"]http://www.mysql.com/doc/M/i/Miscellaneous_functions.html[/url]


Kijk ook eens hier
[url="http://gerard.yoursite.nl/got/php-tiplist/#4"]http://gerard.yoursite.nl/got/php-tiplist/#4[/url]
en
[url="http://gerard.yoursite.nl/got/php-tiplist/#6"]http://gerard.yoursite.nl/got/php-tiplist/#6[/url]

Programmer - an organism that turns coffee into software.


Verwijderd

Wat je nu doet is een plaintext wachtwoord vergelijken met een md5 hash, dat gaat natuurlijk nooit kloppen.
Het lijkt mij in dit geval het makkelijkste om bij de client al een md5 hash te laten berekenen van het wachtwoord en deze vervolgens te verzenden. Dan is ook meteen het probleem opgelost dat het wachtwoord plaintext verzonden wordt. :)

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

simpelste met md5 wat je kunt doen als je het niet leesbaar in de db wilt hebben is md5() voordat je het opslaat (let er ff op dat hier 32 tekens nodig zijn).

Als je user input krijgt md5() je dat ook en vergelijk je het met md5-password uit de DB.

Lousy beveiliging zoals Zoijar zegt, maar zorgt er in ieder geval voor dat de passwords niet in de db staan.

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Als je er nog een laagje MD5 omheen bouwt is het veiliger.

Dus het scenario is als volgt dan:

(1) Server stuurt client random var, $rnd

(2) Client neemt MD5 hash van ingetyped password, $md5up = md5($userpass)

(3) Client string concat (1) met (2) en neemt daar md5 hash van, $net = md5($md5up.$rnd)

(4) Client stuurt server $net, niet in plaintext en ook geen replay attack mogelijk

(5) Server haalt echte gehashde wachtwoord uit database, $md5realpass. Wachtwoorden staan niet plaintext in de database dus.

(6) Server vergelijkt. $net == md5($md5realpass . $rnd). Als gelijk, login correct.

[edit: 32bit random var is wel genoeg, je verwachtingswaarde van het aantal keren inloggen nodig om een random waarde te krijgen die je al had is dan ~2^16 (verjaardagsprobleem, en jij maar denken dat dat voorbeeld op school compleet nutteloos was!) ]

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Op vrijdag 26 juli 2002 13:20 schreef Zoijar het volgende:
Als je er nog een laagje MD5 omheen bouwt is het veiliger.

Dus het scenario is als volgt dan:

(1) Server stuurt client random var, $rnd

(2) Client neemt MD5 hash van ingetyped password, $md5up = md5($userpass)

(3) Client string concat (1) met (2) en neemt daar md5 hash van, $net = md5($md5up.$rnd)

(4) Client stuurt server $net, niet in plaintext en ook geen replay attack mogelijk

(5) Server haalt echte gehashde wachtwoord uit database, $md5realpass. Wachtwoorden staan niet plaintext in de database dus.

(6) Server vergelijkt. $net == md5($md5realpass . $rnd). Als gelijk, login correct.
Jammer alleen dat het password nog steeds gewoon via POST verstuurd wordt.. en al die voorzorgsmaatregelen maken dus niet zoveel uit.

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op vrijdag 26 juli 2002 13:25 schreef Bosmonster het volgende:

[..]

Jammer alleen dat het password nog steeds gewoon via POST verstuurd wordt.. en al die voorzorgsmaatregelen maken dus niet zoveel uit.
Nope op die manier gaat het echte password nooit over de lijn heen...

Programmer - an organism that turns coffee into software.


Verwijderd

Op vrijdag 26 juli 2002 13:25 schreef Bosmonster het volgende:

[..]

Jammer alleen dat het password nog steeds gewoon via POST verstuurd wordt.. en al die voorzorgsmaatregelen maken dus niet zoveel uit.
Het wordt idd met post verstuurd, alleen het ww is bij de client al omgezet in een md5 hash.
Dus het ww is uit die post vars nooit meer terug te halen.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Op vrijdag 26 juli 2002 13:27 schreef _knight_ het volgende:

[..]

Het wordt idd met post verstuurd, alleen het ww is bij de client al omgezet in een md5 hash.
Dus het ww is uit die post vars nooit meer terug te halen.
Hoe wil je het clientside omzetten in een md5 hash? Javascript? :) (ok ze bestaan wel.. JS MD5)

We hebben het hier over PHP, niet over een client/server applicatie.

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Yep, javascript md5 functie.

Dit is hoe ik mijn inlog class heb gebouwd, voel er niet zo veel voor dat alles zo over het bedrijfs lan gaat.

Overigens is dit geen vervanging voor SSL. Er zit nog steeds een security risk in bovenstaande. Oefening aan de lezer laten? ;) (het heeft te maken met toegang hebben tot een tussenliggende router hehe)

Verwijderd

Topicstarter
hoe gevaarlijk moet ik dat dan zien? dat het gewoon met post over het net wordt verstuurd? ik bedoel er is geen geld transactie of wat dan ook. osama gebruikt het ook niet voor zijn geheime boodschappen enzo :P

zijn er dan zoveel mensen die het inet liggen af te sniffen om bij mij wat profiel gegevens te 'hacken' :?

Verwijderd

Het is natuurlijk nooit verstandig om wachtwoorden e.d. als plaintext over het 'grote boze' ineternet te versturen.
Dit gebeurt echter nog bij veel pagina's.
Je moet toch zelf beslissen hoe belangrijk de beveiliging van je site is.

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Dat tweede van die toegang tot een router kan je denk ik wel vergeten ja (dachten ze bij straaljagers ook ooit, totdat een boogie zich ineens als friend kon identificeren via het IFF systeem, dmv relayen naar een ander radar station). Dat eerste van je wachtwoord plaintext over het net is wel een risico. Stel dat hotmail zo zou werken, dan kan het hele bedrijf mn mail lezen!
Pagina: 1