MD5 over velden in tabel
Ik wil het volgende doen: iemand een link sturen zodat hij/zij een pagina met een formulier kan openen om iemand anders een mailtje te sturen. De gegevens van de persoon waar het naar toe moet staan in een MySQL DB.:
voorbeeld usertabel:
ID naam pass email
1 frank test123 [email protected]
2 jan 123test [email protected]
Nu had ik bedacht om een link te sturen die als volgt is opgebouwd:
plak ID en naam ontvanger aan elkaar en haal er een MD5 encryptie overheen: $link=md5(1frank);
De totale link wordt dan: www.website.com?id=7t2gabvdyu327dehb...(de md5 code)
Nu wil ik bij het aanroepen van de link in de database gaan zoeken naar het e-mail adres wat hierbij hoort:
Dus ik wil kijken waar de MD5 van de aan elkaar geplakte velden id en naam hetzelfde is als $_GET['id'].
Ik heb van alles geprobeerd maar krijg het niet voor elkaar. kan het zijn dat dit helemaal niet mag?
Ik heb nu:
$query="SELECT * FROM users WHERE md5(users.ID + users.naam)=\"".$_GET['id']."\"";
Als ik zoiets doe zonder MD5 encryptie werkt het wel.
Iemand een idee?
Vast bedankt,
Frank
Gewijzigd op 01/01/1970 01:00:00 door Frank
Ik denk dat hij het + teken met encrypt.
Maar kan de plank ook helemaal mis slaan natuurlijk :P
Waarbij je $$ vervangt door een variabele waarin de code staat.
Dan vraag ik me nog wel af wat er nu eigenlijk mis is met enkel het id van de gebruiker in de url te zetten. Waarom wil je daar speciaal een hele md5 hash in hebben? Je systeem wordt er in ieder geval niet sneller op...
Waarom ik ID en naam in de hash stop: Anders is het simpel om mensen via het form te spammen. Je MD5'ed gewoon een aantal nummers en je kan altijd wel iemand bereiken via het formulier. Wie is dan wel de vraag en wat je eraan hebt natuurlijk ook maar ik denk laat ik het zekere voor het onzekere nemen. Heb ook nog gedacht om bij het creeren van de gebruikers een extra hash-code in de tabel op te nemen zodat het zoeken sneller gaat maar gezien de grote van de database vond ik dat weer wat overdreven. Dus nu zo opgelost.
Nogmaals bedankt voor jullie reacties en zeker Blanche!
Frank
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
$mail = range("a", "z"); //De letters a-z in een array
shuffle($mail); //met shuffle kun je een array mixen
$mail = implode($mail); //array samenvoegen
$mail = md5($mail); //eventueel hashen zodat er een gelijk soort code uitkomt
[/code]
deze code in de database doen, en deze te controleren via mail. Zodat de gebruiker deze code niet na kan maken.
$mail = range("a", "z"); //De letters a-z in een array
shuffle($mail); //met shuffle kun je een array mixen
$mail = implode($mail); //array samenvoegen
$mail = md5($mail); //eventueel hashen zodat er een gelijk soort code uitkomt
[/code]
deze code in de database doen, en deze te controleren via mail. Zodat de gebruiker deze code niet na kan maken.
Gewijzigd op 01/01/1970 01:00:00 door Kwastie
Dan heb je een md5 hash van een random string van 26 tekens. Hoe kun je hier later nu ooit weer een id, naam of email adres uit de database aan koppelen?
ps. Bovendien werkt het niet omdat implode() twee parameters nodig heeft...
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Het verschil is dat zijn script is dat hij geen veld heeft aangemaakt in de database, maar zijn code is nate maken, dus te faken
Gewijzigd op 01/01/1970 01:00:00 door Kwastie
Kwastie schreef op 07.12.2007 16:37:
En welke md5-hash is dan niet na te maken? Het bestaat uit 'slechts' 32 karakters die ieder maximaal 16 mogelijkheden hebben. De mogelijkheden zijn beperkt.maar zijn code is nate maken, dus te faken
De kans dat iemand hier echter iets mee kan, is dermate klein dat het (op dit moment) een verwaarloosbaar klein risico is. Niet iets om je druk over te maken. En wanneer je stapje verder wilt gaan, neem je SHA1. Dat bestaat uit 40 karakters.