Ik ben bezig met een (voor mij) nieuwe genaratie Admin Tool en ik vraag me af of het ding een beetje bestand is tegen eventuele hackers.
De tool is gemaakt in PHP, login en password info komt uit een MySQL DB en het zaakje draait op Apache. Passwords zijn gecodeerd met md5 in de DB.
Bovenaan elke pagina wordt een login file included. Hierin wordt nagegaan of men toegang heeft tot die betreffende pagina.
Aanpak is (in volgorde):
PHP:
1. is er form-data meegegeven (in $HTTP_POST_VARS) en is er een random-waarde gezet en bekend in de session?
2. ja, dan password info ophalen uit db waar login naam gelijk is aan db-naam (case-sensative) - bij geen match: foutmelding
3. plak password en random-waarde aan elkaar en haal er een md5 overheen (zoiets: md5($password.$rndval))
4. matched dit met het geposte password (zie stap 7)? nee: foutmelding
5. ja: bezoeker heeft toegang - zet session-variabele
HTML:
6. als de bezoeker geen toegang heeft krijgt deze een login form te zien (met aan het eind een 'exit', zodat het script stopt - doh!)
7. op de onsubmit wordt het password veld overschreven door een javascript-md5 password + de random-waarde uit de sessie. Hier wordt dan weer een md5 overheen gehaald, zodat de random-waarde onherkenbaar wordt gemaakt.
Dat is het zo'n beetje. Ik zou wel source willen posten, maar er staan vrij veel frutsels omheen, die de zaak alleen maar vaag maken.
Vraag is dus: is dit goed secure zo? Ik zit met het ding dat uiteindelijk de zaak valt of staat met het gezet zijn van een session-variabele die zegt of de bezoeker toegang heeft of niet. Valt zoiets te omzeilen? Ik heb wel iets gelezen over 'session-hijacking', maar ik vraag me af wat ik me daar bij moet voorstellen...
De tool is gemaakt in PHP, login en password info komt uit een MySQL DB en het zaakje draait op Apache. Passwords zijn gecodeerd met md5 in de DB.
Bovenaan elke pagina wordt een login file included. Hierin wordt nagegaan of men toegang heeft tot die betreffende pagina.
Aanpak is (in volgorde):
PHP:
1. is er form-data meegegeven (in $HTTP_POST_VARS) en is er een random-waarde gezet en bekend in de session?
2. ja, dan password info ophalen uit db waar login naam gelijk is aan db-naam (case-sensative) - bij geen match: foutmelding
3. plak password en random-waarde aan elkaar en haal er een md5 overheen (zoiets: md5($password.$rndval))
4. matched dit met het geposte password (zie stap 7)? nee: foutmelding
5. ja: bezoeker heeft toegang - zet session-variabele
HTML:
6. als de bezoeker geen toegang heeft krijgt deze een login form te zien (met aan het eind een 'exit', zodat het script stopt - doh!)
7. op de onsubmit wordt het password veld overschreven door een javascript-md5 password + de random-waarde uit de sessie. Hier wordt dan weer een md5 overheen gehaald, zodat de random-waarde onherkenbaar wordt gemaakt.
Dat is het zo'n beetje. Ik zou wel source willen posten, maar er staan vrij veel frutsels omheen, die de zaak alleen maar vaag maken.
Vraag is dus: is dit goed secure zo? Ik zit met het ding dat uiteindelijk de zaak valt of staat met het gezet zijn van een session-variabele die zegt of de bezoeker toegang heeft of niet. Valt zoiets te omzeilen? Ik heb wel iets gelezen over 'session-hijacking', maar ik vraag me af wat ik me daar bij moet voorstellen...
[ specs ] [ Tweaker gallery ]