MD5 voor URL-balk
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
Als je iets in MD5 omzet weet je niet meer wat er stond.
Gebruik BASE64
Webmakerij:
MD5 is nooit om te rekenen.
Als je iets in MD5 omzet weet je niet meer wat er stond.
Gebruik BASE64
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:
Gewijzigd op 01/01/1970 01:00:00 door niek s
Ik check namelijk die variabel en gebruik deze weer op de volgende pagina voor mijn query.
Code (php)
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
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?
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
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.
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)
Maar, dan ga ik mij toch afvragen waarom het id van pietje verborgen moet brijven?
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.
Quote:
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.En moet er FOEI geroepen worden als hij niet op zijn eigen ID met bijbehorende fucnties zit.
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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...
}
?>
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.
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?
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.