Variabelen in de url Hashen oid

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bram

Bram

16/08/2006 10:07:00
Quote Anchor link
Hoi mensen. ik ben een beetje bezig met MD5, en variabelen in de URL.

Ik stuur bijvoorbeeld een variabele $HOOFDSTUK mee in de url. Deze is bijvoorbeeld 1. Kortom je zit in hoofdstuk 1 en aan de hand van die variabele haald het systeem informatie uit de database.

Maar wanneer ik in de URL de 1 verander in de 5 spring ik zo naar hoofdstuk 5. En dat moet niet de bedoeling zijn. Kan ik dit afschermen? Met bijvoorbeeld een MD5 Hash, of een script wat controleerd of je het hoofdstuk afgerond hebt of niet... ?
 
PHP hulp

PHP hulp

22/12/2024 16:45:18
 
Kalle P

Kalle P

16/08/2006 10:23:00
Quote Anchor link
Niet mee sturen in de url, gebruik een sessie of POST. En geen GET.
 
Ponzi

Ponzi

16/08/2006 10:25:00
Quote Anchor link
Waarom neem je geen base64_decode() en base64_encode() ? Niet superveilig, maar een gewone gebruiker zal niet weten wat het betekend. Eventjes terugzetten bij het laden van het script, is_numeric() checken ofzoiets en dan uit DB halen :) .
 
Bram

Bram

16/08/2006 10:31:00
Quote Anchor link
Ja dat is inderdaad een idee, het is ook geen variable waarbij het systeem staat of valt. Want variabele als ww en login schrijf ik weg in een sessie. Het is alleen tegen de wat makkelijk uitgevallen gebruikers.

Ik heb overigens na een halve dag zoeken wel een mooi artikel gevonden over dit onderwerp:

http://www.zend.com/zend/spotlight/securevariablepart1.php
http://www.zend.com/zend/spotlight/securevariablepart2.php
http://www.zend.com/zend/spotlight/securevariablepart3.php

Deze komt eigenlijk overeen met mijn vraag ook, kortom een goede link op toekomstige vragen van dit soort.
 
Bram

Bram

16/08/2006 10:47:00
Quote Anchor link
Wat ik overigens wel heb geprobeerd is dit:

$HOOFDSTUK = md5($HOOFDSTUK);

Wanneer ik nu $HOOFDSTUK=1 invul in de url dan werkt de pagina niet meer (dat is dus goed). Maar als ik nu $HOOFDSTUK=c4ca4238a0b923820dcc509a6f75849b invul (wat gelijk staat aan de hash van 1) dan werkt de pagina wel maar laat hij hoofdstuk 1 niet zien.

Ik heb ergens ooit gelezen dat een MD5 hash niet persee een unieke waarde is kortom dat 1 en dezelfde hash meerdere dingen kan betekenen. Dat is dus ook misschien de reden van fout. Weet iemand hoe ik het zo kan maken dat de Hash wel uniek is en dus alleen maar "1" zou kunnen betekenen.
 
Joren de Wit

Joren de Wit

16/08/2006 10:48:00
Quote Anchor link
Bram:
Want variabele als ww en login schrijf ik weg in een sessie.


Off-topic: Een wachtwoord moet je niet wegschrijven in een sessie! Wachtwoorden zijn bedoeld om een eenmalige check uit te voeren en daarna gebruik je die informatie niet meer...

Maak dan liever een sessie aan als $_SESSION['ingelogd'] == 'true' en een sessie met de user bijvoorbeeld...

on-topic: Met md5 gaat je dat niet lukken. Als je je hoofdstuknummers toch in een gecodeerde vorm in de url wilt hebben kun je beter de al eerder voorgestelde base64 codering gebruiken. Deze is namelijk ook weer te decoderen binnen je script, iets dat md5 niet is.

Kortom, met md5 zul je dus altijd moeten gaan checken of de hash in je url gelijk is aan de hash van een bepaald hoofdstuknummer...
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Ponzi

Ponzi

16/08/2006 10:49:00
Quote Anchor link
De kans dat een MD5-hash niet uniek is was 3,.... ^38 ofzoiets: onbestaande dus eigenlijk ;) !
 
Bram

Bram

16/08/2006 10:59:00
Quote Anchor link
ooow ok! dank voor de reacties. Ik wist niet dat Base64 dat voordeel had. Maar dat is dan iig wat ik zoek denk ik aangezien je het daarna met je script weer decodeerd ja. Daar zal ik nog eens naar gaan kijken dan.

Oftopic :Wat betreft die inlog sessie. Ik schrijf het ook zo weg met ingelogd == true. Ik formuleerde het alleen verkeerd. Wat ik dus bedoelde is dat ik het inlog systeem wel met een session heb.
De check zoals deze in elke header staat bevat ook een check van je userid (uit de db) als men bijvoorbeeld in de URL dan $USER veranderd, dan krijgt met ook een bericht dat deze persoon niet gemachtigd is om deze pagina te bekijken. Maar dat oftpic dus.
 
Bram

Bram

16/08/2006 11:08:00
Quote Anchor link
Ik zit hier nu naar Base64 te kijken maar de decoding van een string als $HOOFDSTUK=1 en $HOOFDSTUK=2 is practies hezelfde...

$HOOFDSTUK=1 -> JEhPT0ZEU1RVSz0y
$HOOFDSTUK=2 -> JEhPT0ZEU1RVSz0x

Of is er manier om dit anders te doen? Want op deze manier zie je nog steeds een duidelijk ssyteem. Want ik gok zelf dat $HOOFDSTUK=0 gelijk zal staan aan JEhPT0ZEU1RVSz0w.
Gewijzigd op 01/01/1970 01:00:00 door Bram
 
Ponzi

Ponzi

16/08/2006 11:13:00
Quote Anchor link
Volgens mij niet hoor, maar de gemiddelde gebruiker zal er toch nooit iets van snappen / het kunnen aanpassen. Anders moet je het via een sessie doen ;) !
 
- wes  -

- wes -

16/08/2006 11:16:00
Quote Anchor link
JEhPT0ZEU1RVSz0x

je hash zegt dat je zeurt :)
 
Bram

Bram

16/08/2006 11:17:00
Quote Anchor link
Ik vind dat met die sessies knap lastig, ik ben blij dat mijn login systeem eindelijk staat (en werkt naar behoren, kortom supersysteem dat wel). Maar dat is het (object?) wegschrijven van een sessie eenmalig. Is het makkelijk te doen om datzelfde object steeds aan te passen? Zegmaar iedere keer als je tussen paginas schakeld?
 
Bram

Bram

16/08/2006 11:19:00
Quote Anchor link
wes:
JEhPT0ZEU1RVSz0x

je hash zegt dat je zeurt :)


Haha :) lekker dan! :P
 
Bram

Bram

16/08/2006 11:23:00
Quote Anchor link
Moet je dat met session_register doen oid? en dan je class met variabelen registreren in je object naam ofzo?
 
Ponzi

Ponzi

16/08/2006 11:29:00
Quote Anchor link
Gewoon $_SESSION['var'] = $var; .

Je variabele blijft dan behouden tot het einde van de sessie ;) .
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.