[JS] Hoe password MD5 encrypten voor POST wordt uitgevoerd

Pagina: 1
Acties:
  • 169 views sinds 30-01-2008

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik zou graag de variablen password welke gevuld word in een form MD5 encrypten voordat deze ge-post wordt door het form.

Dus als op de knop login wordt gedrukt, dat dan eerst het password wordt geencrypt en dan gepost.

Kan dit?

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Je wilt door door middel van Javascript een wachtwoord MD5'en? Vervolgens wil je dit gehash'de wachtwoorden verzenden?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Met javascript. Even zoeken op onze zoekgod was voldoende.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

http://pajhome.org.uk/crypt/md5/index.html

hash wel een eenmalige challenge mee, anders is het natuurlijk nog niet secure.

[ Voor 50% gewijzigd door crisp op 14-10-2004 16:35 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
gorgi_19 schreef op 14 oktober 2004 @ 16:34:
Je wilt door door middel van Javascript een wachtwoord MD5'en? Vervolgens wil je dit gehash'de wachtwoorden verzenden?
Nee, niet door middel van java. Gewoon bv. met de php functie MD5($password);
maar dit moet uitgevoerd worden VOORDAT er gepost wordt.

Acties:
  • 0 Henk 'm!

Verwijderd

crisp schreef op 14 oktober 2004 @ 16:35:
http://pajhome.org.uk/crypt/md5/index.html

hash wel een eenmalige challenge mee, anders is het natuurlijk nog niet secure.
offtopic:
Crisp en Ivy zoeken klaarblijkelijk met dezelfde zoekmasjien

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
crisp schreef op 14 oktober 2004 @ 16:35:
http://pajhome.org.uk/crypt/md5/index.html

hash wel een eenmalige challenge mee, anders is het natuurlijk nog niet secure.
Ik kan je hier even niet volgen.

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 14 oktober 2004 @ 16:36:
[...]


Nee, niet door middel van java. Gewoon bv. met de php functie MD5($password);
maar dit moet uitgevoerd worden VOORDAT er gepost wordt.
Java != Javascript. Als je nog niet gepost hebt, zit je op de client en komt PHP er nog niet bij kijken :) Deze draait op de server :) Zie Crisp (oa) voor een Javascript oplossing; deze kan op de client draaien :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Verwijderd schreef op 14 oktober 2004 @ 16:36:
[...]


Nee, niet door middel van java. Gewoon bv. met de php functie MD5($password);
maar dit moet uitgevoerd worden VOORDAT er gepost wordt.
Kan niet, PHP wordt uitgevoerd op de server. Elke event voor de POST is op de client, daar kan je met PHP niets doen.

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
AtleX schreef op 14 oktober 2004 @ 16:37:
[...]


Kan niet, PHP wordt uitgevoerd op de server. Elke event voor de POST is op de client, daar kan je met PHP niets doen.
Ok, dan houd het op wat PHP betreft. Ik zal de javascript oplossing implementeren.

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Dan gooi ik hem nog even richting Webdesign & Graphics :P

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
crisp schreef op 14 oktober 2004 @ 16:35:
http://pajhome.org.uk/crypt/md5/index.html

hash wel een eenmalige challenge mee, anders is het natuurlijk nog niet secure.
Kun je misschien een korte uitleg geven? Wat bedoel je precies met een eenmalige challenge

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:27

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op 14 oktober 2004 @ 16:36:
[...]


Ik kan je hier even niet volgen.
Wat heb je eraan als je gewoon md5 (je_wachtwoord) stuurt? Als iemand anders de data onderschept kan hij ook gewoon diezelfde waarde opsturen als hij als jou in wil loggen, zonder dat ie dan je wachtwoord weet.

Je moet dus met je form een bepaalde waarde (noemen we even x) meesturen die elke keer anders is, zodat die waarde mee kan worden genomen in je MD5 berekening. Als iemand nou het gehashte wachtwoord onderschept dan kan hij alleen maar inloggen als x ook hetzelfde is, dus als jij zorgt dat die x elke keer anders is heeft de persoon niets aan de onderschepte data.

[ Voor 13% gewijzigd door .oisyn op 14-10-2004 16:44 ]

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!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44

MBV

Waarom gebruik je niet HTTPS voor zo'n belangrijk form? Dan kan er helemaal geen data worden onderschept, zonder uren te rekenen aan de sleutels

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
.oisyn schreef op 14 oktober 2004 @ 16:43:
[...]


Wat heb je eraan als je gewoon md5 (je_wachtwoord) stuurt? Als iemand anders de data onderschept kan hij ook gewoon diezelfde waarde opsturen als hij als jou in wil loggen, zonder dat ie dan je wachtwoord weet.

Je moet dus met je form een bepaalde waarde (noemen we even x) meesturen die elke keer anders is, zodat die waarde mee kan worden genomen in je MD5 berekening. Als iemand nou het gehashte wachtwoord onderschept dan kan hij alleen maar inloggen als x ook hetzelfde is, dus als jij zorgt dat die x elke keer anders is heeft de persoon niets aan de onderschepte data.
Maar die meegestuurde x waarde kunnen ze toch ook opvangen?

Hoe controleer je dan tegen de database of je pwd klopt als de waarde x elke keer verandert? Aan wat voor soort berekening moet ik dan denken?

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

stappenplan:
  1. genereer serverside een random variabele x
  2. sla deze op in een sessie
  3. stuur formulier door naar client met variabele x
  4. gebruiker typt wachtwoord in
  5. genereer nu een waarde y1 dmv md5(md5(wachtwoord) + x)
  6. stuur y1 terug naar server
  7. server haalt wachtwoord z van gebruiker uit database - deze is natuurlijk al als md5 opgeslagen
  8. server berekent zelf y2 dmv md5(z + x)
  9. als y1 == y2 dan mag de gebruiker verder, anders terug naar 1)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

De server onthoudt x en stuurt deze naar de client. De client hashed wachtwoord+x en stuurt dit op naar de server. De server haalt het wachtworod op en maakt ook een hash van wachtwoord+x en vergelijkt dit met de opgestuurde versie. Komen deze overeen dan was het wachtwoord het juiste wachtwoord.

Door x nu te laten varieren is het overgestuurde (hash van wachtwoord+x) dus altijd verschillend. Een onderschepte waarde kan nooit worden hergebruikt tenzij er ooit een keer dezelfde x op de server wordt onthouden.

hmm... spuit++

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:27

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op 14 oktober 2004 @ 16:49:
[...]


Maar die meegestuurde x waarde kunnen ze toch ook opvangen?
En wat hebben ze daaraan dan? Die verandert toch steeds, ze weten slechts dat voor een bepaalde x het md5 van je wachtwoord y is, dus kunnen ze alleen met y inloggen als x hetzelfde is. Alleen x verandert steeds, dus y ook.

- Server genereert random waarde (x), en slaat deze op
- Server stuurt x met de html mee
- Client berekent y = md5 (ingevoerde_wachtwoord + x), en stuurt dat terug
- Server controleert of y == md5 (opgeslagen_wachtwoord + opgeslagen_x)

Nadeel van bovenstaand schema is dat de server beschikking moet hebben over een ongecodeerd wachtwoord, maar ik laat de manier om dat op te lossen aan jouw creativiteit over ;)

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!

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024

Roa

Verwijderd schreef op 14 oktober 2004 @ 16:49:
[...]


Maar die meegestuurde x waarde kunnen ze toch ook opvangen?

Hoe controleer je dan tegen de database of je pwd klopt als de waarde x elke keer verandert? Aan wat voor soort berekening moet ik dan denken?
Goed, iets anders uitgelegd.

Je hebt een inlog script met 2 velden, een username veld en een password veld. Je wilt niet dat mensen je password kunnen onderscheppen, dus je encrypt dit d.m.v. javascript, maar als mensen nu het geëncrypte wachtwoord onderscheppen, kunnen ze nog steeds inloggen, ze kunnen immers de opgevangen data verzenden naar de server, dus wat je wilt is bij iedere POST een uniek iets toevoegen. Wat je dus in feite moet doen is dit:

Als iemand op de login pagina komt, stuur je d.m.v. php ook een hidden veld mee waarin een unieke key staat (een cijfer o.i.d.) Als het formulier vervolgens gesubmit wordt, stop je de username, het password en die key bijelkaar, en je encrypt het. Dan pas verstuur je de data naar je server. In je php script dat de login controleerd doe je hetzelfde, je voegt de username, het password en die key weer samen, en je encrypt dit. Vervolgens vergelijk je die 2 gegevens met elkaar, die zouden overéén moeten komen. Als de verzonden data dus anders was, klopt of het wachtwoord niet, of de username of er zat geen key bij/de key was fout.

Doordat je dus iedere keer een andere key gebruikt (random) kan iemand die die gegevens onderschept er niets mee, want de key is bij iedere aanvraag weer anders en dus kan hij/zij er nog niets mee ;)

edit:
Nou, je zou denken dat het na 4 posts met uitleg toch wel duidelijk moet zijn :P
Nadeel van bovenstaand schema is dat de server beschikking moet hebben over een ongecodeerd wachtwoord, maar ik laat de manier om dat op te lossen aan jouw creativiteit over ;)
Daar is ook weer van alles te verzinnen hoor, persoonlijk vind ik het gevaarlijker om je wachtwoorden ongecodeerd in je database te hebben staan, dan om geen key bij je post te hebben. Maar goed, hoe veilig wil je het hebben, het is niet alsof er kernraketten kunnen worden afgevuurd als je in het CMS komt :P

[ Voor 16% gewijzigd door Roa op 14-10-2004 17:03 ]

Research is what I'm doing when I don't know what I'm doing.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:27

.oisyn

Moderator Devschuur®

Demotivational Speaker

Roa: hashen != encrypten ;)
Daar is ook weer van alles te verzinnen hoor
euh ja duh, het ging me erom dat ik niet alles voor wilde kauwen, maar helaas heeft crisp de hint al gegeven...

[ Voor 76% gewijzigd door .oisyn op 14-10-2004 17:05 ]

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!

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024

Roa

Mjah, maar je kan ook een hash encrypten :P en dat was eigenlijk wel de bedoeling volgens mijn verhaal..dacht ik :P Ohk, goed, ik had de username even weg moeten laten in mijn voorbeeld O-)

Research is what I'm doing when I don't know what I'm doing.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Roa schreef op 14 oktober 2004 @ 17:00:
[...]


Goed, iets anders uitgelegd.

Je hebt een inlog script met 2 velden, een username veld en een password veld. Je wilt niet dat mensen je password kunnen onderscheppen, dus je encrypt dit d.m.v. javascript, maar als mensen nu het geëncrypte wachtwoord onderscheppen, kunnen ze nog steeds inloggen, ze kunnen immers de opgevangen data verzenden naar de server, dus wat je wilt is bij iedere POST een uniek iets toevoegen. Wat je dus in feite moet doen is dit:

Als iemand op de login pagina komt, stuur je d.m.v. php ook een hidden veld mee waarin een unieke key staat (een cijfer o.i.d.) Als het formulier vervolgens gesubmit wordt, stop je de username, het password en die key bijelkaar, en je encrypt het. Dan pas verstuur je de data naar je server. In je php script dat de login controleerd doe je hetzelfde, je voegt de username, het password en die key weer samen, en je encrypt dit. Vervolgens vergelijk je die 2 gegevens met elkaar, die zouden overéén moeten komen. Als de verzonden data dus anders was, klopt of het wachtwoord niet, of de username of er zat geen key bij/de key was fout.

Doordat je dus iedere keer een andere key gebruikt (random) kan iemand die die gegevens onderschept er niets mee, want de key is bij iedere aanvraag weer anders en dus kan hij/zij er nog niets mee ;)

edit:
Nou, je zou denken dat het na 4 posts met uitleg toch wel duidelijk moet zijn :P



[...]


Daar is ook weer van alles te verzinnen hoor, persoonlijk vind ik het gevaarlijker om je wachtwoorden ongecodeerd in je database te hebben staan, dan om geen key bij je post te hebben. Maar goed, hoe veilig wil je het hebben, het is niet alsof er kernraketten kunnen worden afgevuurd als je in het CMS komt :P
Thx, allemaal.
Ik kom er wel uit. _/-\o_

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben toch gezwicht voor javascript.
Ik maak gebruik van een PHP SESSIE. In deze sessie creer ik een unieke code. Nu wil ik dmv javascript hetvolgende uitvoeren vb.: md5(password+unieke code) en dan posten.

Maar hoe kan ik dmv. javascript de functie POST van een pagina overnemen?

De rest(md5 enzo) lukt wel in javascript, maar hoe submit ik dan het form?

Verder, bedankt voor al de reacties. Ik heb al enorm veel geleerd hier.

Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
euhm...

code:
1
2
3
4
5
<form id="mijnForm"> blabla </form>

in de JS:

document.getElementById('mijnForm').submit();


:?

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

beter is
HTML:
1
<form onsubmit="functie()">

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hmm, ik had gedacht dat er in javascript een functie md5 zou zitten, maar dat bestaat er niet volgens mij.
En ik krijg het niet voor mekaar om de evt. gewijzigde gegevens terug te sturen naar het form.
Iemand enig idee hoe dit wel werkend te krijgen is?
Thx..

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 18 oktober 2004 @ 20:10:
Hmm, ik had gedacht dat er in javascript een functie md5 zou zitten, maar dat bestaat er niet volgens mij.
waarom denk je dat ivy en crisp dan een linkje hebben gepost met md5 in javascript?
Verwijderd schreef op 14 oktober 2004 @ 16:34:
Met javascript. Even zoeken op onze zoekgod was voldoende.
crisp schreef op 14 oktober 2004 @ 16:35:
http://pajhome.org.uk/crypt/md5/index.html

hash wel een eenmalige challenge mee, anders is het natuurlijk nog niet secure.
:P

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Tuurlijk, srry. Zal aan het feit liggen dat ik nu al 13,5 uur aan het werk ben :(

Toch rest mij een vraag: kan het niet op een andere manier dan met javascript? Wat als de browser nu geen javascript ondersteund?

Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

Verwijderd schreef op 18 oktober 2004 @ 20:15:
Tuurlijk, srry. Zal aan het feit liggen dat ik nu al 13,5 uur aan het werk ben :(

Toch rest mij een vraag: kan het niet op een andere manier dan met javascript? Wat als de browser nu geen javascript ondersteund?
SSL is dan een mogelijkheid of anders Flash.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

Verwijderd schreef op 18 oktober 2004 @ 20:15:
Tuurlijk, srry. Zal aan het feit liggen dat ik nu al 13,5 uur aan het werk ben :(

Toch rest mij een vraag: kan het niet op een andere manier dan met javascript? Wat als de browser nu geen javascript ondersteund?
Dan geef je ze de optie om zonder versleuteling in te loggen; zie bijvoorbeeld http://gathering.tweakers.net/forum/login ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
iemand anders toevallig nog een simpel doch doeltreffend en secure voorbeeld script liggen? Mijn denkvermogen laat me nu toch echt in de steek. Stuur al te lang naar het scherm.

Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

Verwijderd schreef op 18 oktober 2004 @ 20:19:
iemand anders toevallig nog een simpel doch doeltreffend en secure voorbeeld script liggen? Mijn denkvermogen laat me nu toch echt in de steek. Stuur al te lang naar het scherm.
Neem dan even pauze en ga morgen weer verder :)

www.hotscripts.com heeft bijvoorbeeld een hele lading scipts, vast ook wel op dit vlak :)

DM!


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

Hoe moeilijk is het om eens te kijken hoe wij dat hier geimplementeerd hebben? In feite heb ik daarmee al aan je scriptrequest (want dat is het nu) al voldaan...

Intentionally left blank

Pagina: 1

Dit topic is gesloten.