MD5 voor URL-balk

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bram

Bram

21/07/2006 09:51:00
Quote Anchor link
Dag mensen,

Ik had een vraag omtrend MD5 en je URLbalk. Ik heb bepaalde links gestript met .htaccess zodat ik ipv de variabelen in de URL nu een mappen structuur zie staan zoals:

www.websitenaam.nl/bestandnaam/24
oid.

Dat is al in de richting van wat ik wil, maar kan ik nu een link ipv 24 de hash van de MD5 versie van 24 meegeven? En deze daarna weer uitlezen als 24? Dat je zeg maar zoiets krijgt:

www.websitenaam.nl/bestandnaam/al8ds230sdk23s45ds

Kortom een beetje net als je bijvoorbeeld bij Hotmail endergelijke hebt. Dat je niet ziet wat er staat en dat je het ook niet kan veranderen.

De variabele moet dus op de pagina erna wel weer gebruikt kunnen worden....
Gewijzigd op 01/01/1970 01:00:00 door Bram
 
PHP hulp

PHP hulp

07/11/2024 17:39:02
 
Bram

Bram

21/07/2006 09:54:00
Quote Anchor link
Even voor de opheldering voor het gestript was zag het er dus bijvoorbeeld zo uit:

www.websitenaam.nl/bestandnaam.php?id=24
 

21/07/2006 09:55:00
Quote Anchor link
MD5 is nooit om te rekenen.
Als je iets in MD5 omzet weet je niet meer wat er stond.

Gebruik BASE64
 
Niek s

niek s

21/07/2006 10:00:00
Quote Anchor link
Webmakerij:
MD5 is nooit om te rekenen.
Als je iets in MD5 omzet weet je niet meer wat er stond.

Gebruik BASE64


Dat is niet helemaal waar, als je even de tijd hebt is het te kraken, maar vanaf 8 caracters schijnt het onmogelijk te worden...
Edit:

check deze URL maar: klik klik
Gewijzigd op 01/01/1970 01:00:00 door niek s
 
Bram

Bram

21/07/2006 10:05:00
Quote Anchor link
Hmm, dat BASE64 is wel handig maar omdat ik maar lage cijfers heb krijg je ook maar korte codes. bij MD5 is dit altijd even lang. Maar is het trouwens ook geen probleem dat MD5 eigenlijk gelijk is aan verschillende uitkomsten? Waardoor het systeem eigenlijk niks kan met MD5.

Ik check namelijk die variabel en gebruik deze weer op de volgende pagina voor mijn query.
 
Niek s

niek s

21/07/2006 10:30:00
Quote Anchor link
misschien een idee om alle pagina's die je hebt in een array ofzo te zetten, bv zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?
$pagina
= array();

$pagina[1] = md5(1);
$pagina[2] = md5(2);
$pagina[3] = md5(3);
//enz
?>

En dan laat je een For of while loopje kijken of de md5 code die in de url balk staat, misschien overeen komt met een array waarde?!

(ik zal nu even iets in elkaar flansen, zet het zo wel online)
Gewijzigd op 01/01/1970 01:00:00 door niek s
 
Bram

Bram

21/07/2006 10:36:00
Quote Anchor link
Ok,

Maar is dit trouwens wel gebruikelijk wat ik wil. Want ik zie zoiets soortgelijks op veel sites (zoals hotmail dus) maar ik weet niet wat voor een techniek ze daar toepassen?
 
Bo az

Bo az

21/07/2006 10:37:00
Quote Anchor link
@niek
niek:
Dat is niet helemaal waar, als je even de tijd hebt is het te kraken, maar vanaf 8 caracters schijnt het onmogelijk te worden...


Dat is dan altijd nog bruteforce, en aangezien er meerdere combinaties de zelfde md5 hash als resultaat hebben, weet je dus nog steeds niet zeker het ook resultaat het zelfde is wat er ingestopt is.

Ontoppic:

Ik weet niet wat de bedoeling is?
Maar je kan zoals gezegd base64 encoding gebruiken, het nadeel is dat idereen dit kan decoderen.
Wil je dus iets voor de gebruiker verbergen, dan kan je beter eens naar sessions kijken.

Edit
@ bram

Waarschijnlijk is dat een soort unieke code om jou te identificeren, net zoals het session_id
Gewijzigd op 01/01/1970 01:00:00 door Bo az
 
Bram

Bram

21/07/2006 10:45:00
Quote Anchor link
Het probleem met sessions is dat ik een aantal variabelen heb in mijn URL welke constant veranderen. Ik klik bijvoorbeeld op pietje en ik krijg dmv het id van pietje zijn gegevens te zien op een andere pagina.

Maar als ik dit soort dingen in een session zou schrijven dan moet ik dat als ik bijvoorbeeld op henk klik overschrijven. En nog belangrijker de session sluiten bij het verlaten van de site.

En als dit wel mogelijk is met sessions, hoe moet ik dit dan verwerken met bijvoorbeeld dit voorbeeld wat ik heb gegeven? Ik kan namelijk alleen dingen vinden met sessions wat over inloggen en dergelijke gaat.
 
Niek s

niek s

21/07/2006 10:54:00
Quote Anchor link
niet iedereen kan het coderen, ik denk dat meer de bedoeling is dat het niet leesbaar is voor de mens, maar als je er klein beetje moeite voor doet dat het dan meteen te zien is? (zoals een BASE64 codering) en anders schrijf je zelf een codering! (wel leuk project opzich, ga ik misschien wel iets mee doen)
 
Bo az

Bo az

21/07/2006 10:56:00
Quote Anchor link
Je kan session variabelen zonder problemen overschrijven, ook hoeft de session niet gesloten te zijn bij het verlaten van de site, want deze verdwijt vanzelf (na enige tijd).

Maar, dan ga ik mij toch afvragen waarom het id van pietje verborgen moet brijven?
 
Bram

Bram

21/07/2006 11:13:00
Quote Anchor link
Nou dat is niet noodzakelijk dat dat id verborgen moet zijn, maar een persoon mag bijvoorbeeld niet een twee drie het profiel (met behaalde resultaten) van pietje kunnen bekijken. Voornamelijk alleen pietje zelf. En als pietje iets wil veranderen in de URL dan moet het niet overduidelijk zijn. En moet er FOEI geroepen worden als hij niet op zijn eigen ID met bijbehorende fucnties zit.
 
Frank -

Frank -

21/07/2006 13:10:00
Quote Anchor link
offtopic:
Quote:
En moet er FOEI geroepen worden als hij niet op zijn eigen ID met bijbehorende fucnties zit.
Dat moet je dus juist niet doen. Een algemene foutmelding als 'Er is een fout opgetreden' is vele malen beter. Het zegt de gebruiker namelijk helemaal niets. En dat is precies wat jij een hacker wilt vertellen: Helemaal niets.

Met md5() en sha1() kun je uitstekend vergelijkingen maken. En wanneer je er voor zorgt dat je een salt gebruikt, is het vrijwel onmogelijk te kraken. Voorbeeldje waarbij het id als een md5-string uit de url wordt gehaald. De originele waarde is '1':

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
error_reporting(E_ALL);

// Zet dit in een include die je buiten de webroot houdt:
$salt = 'bedenk maar een Geheime code met !@#$%^&';

// code om de url te maken, staat normaal dus in een ander script
$code = md5($salt.'1');

echo $code.PHP_EOL; // voorbeeldje

// code waar het hier om draait. $salt komt uit de include, de waarde 1 uit bv. een database

if (isset($code) && $code == md5($salt.'1')) {
    echo 'waarde is gelijk';
}

else {
    echo 'Er is een fout opgetreden'; // heb je echt wat aan...
}
?>

Dit mag je zelf gaan versleutelen tot een bruikbaar script.
 
Bram

Bram

21/07/2006 13:50:00
Quote Anchor link
Ah zo,

Dat van die FOEI was uiteraard een voorbeeld, maar dat snap je zelf denk ik ook wel :P
Verder moet ik daar toch indd goed naar kijken. Maar het is dus voor elkaar te krijgen om via een session alleen de ingelogde gebruiker zijn eigen id pagina te laten zien? En zodra hij het id zou veranderen (in de URL) krijgt hij een foutmelding omdat dit niks met zijn eigen id te maken heeft (ook al zou het ingevulde wel bestaan)?

Dat kan? of niet?
 
Frank -

Frank -

21/07/2006 13:58:00
Quote Anchor link
Wanneer je sessies gebruikt voor het opslaan van het id, dan hoef je dus geen GET (gegevens uit de url) te gebruiken voor het opslaan van het id. Maak een keuze.
 



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.