[PHP] twoway encryption van nummer in ?id=nummer

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Devilfish
  • Registratie: Augustus 2001
  • Laatst online: 17-09 13:34
Voor een site die ik aan het maken ben zoek een manier om de id's niet simpel te laten oplopen (zodat je kunt raden) dus niet dat je urls als dit krijgt:

?id=4234
?id=4235
?id=4236

en dat je dus kunt gaan raden wat de volgende pagina is. Nou heeft php hele mooie one way encryptie functies, maar two way zijn er een stuk minder. Helaas is de lib mcrypt bij mijn hoster niet geinstalleerd en kan ik dus ook niet gebruiken.

Via google heb ik al wel een paar functies weten te vinden, maar veilig zijn die niet echt. Zowerkt base64_encode en base64_decode wel, maar deze is wel erg makkelijk te raden (ook omdat er karakteristieke = tekens in voorkomen). Daarnaast ben ik er nog een paar tegen gekomen, maar die waren te zwaar om x keer in een pagina te worden aangeroepen...

Ofwel ik zoek een redelijk secure (niet 123 te doorgronden) encryptie algoritme dat ook te decrypten is en nog een beetje efficient/snel is ook. Hoop dat dit niet te veel overkomt als een script request, want dat is niet de bedoeling, een algoritme / idee is genoeg voor mij, programmeren kan ik zelf wel.

Idee\"en over een andere oplossing voor link guessing mag natuurlijk ook (Niet via truukjes als met POST variabelen).

Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
DES3 is een duidelijk geformuleerde encryptiemethode. Je moet een keer een vaste sleutel kiezen/verkrijgen en die steeds gebruiken voor encryptie/decryptie.

Omdat er in dit geval alleen encrypted data over de lijn (lees: naar de client browser) en die client verder geen encrypted data terugstuurt (behalve wat ie al kreeg) wordt het erg lastig om het te kraken en zeker niet makkelijk de sleutel te raden.

Er zit trouwens een groot verschil tussen encryptie en encoding. Encoding wordt over het algemeen gebruikt om bijvoorbeeld binaire beperkingen te omzeilen (een mailbericht mag alleen gebruik maken van 7bits ASCII, dus een binaire attachment moet worden omgezet enzo).

Encryptie is echt bedoeld voor beveiliging en moet dus zonder sleutel onomkeerbaar zijn (nou ja, dat zouden we wel willen, maar zo goed als onomkeerbaar).

Je wist dit vast al, maar ik dacht kom, ik spui eens iets dat ik wel weet. ;)

Acties:
  • 0 Henk 'm!

  • Evilbee
  • Registratie: November 2002
  • Laatst online: 14:59
Ik weet niet wat je met die id's doen, maar als je ze in een database hebt staan. Dan zou je eventueel een extra colom er bij kunnen zetten met een random hashcode door middel van md5 oid. Dan heb je een soort van twoway manier waar je mee kan werken.

LinkedIn - Collega worden?


Acties:
  • 0 Henk 'm!

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 21-08 15:00
misschien heb je hier iets aan http://nl3.php.net/manual-lookup.php?pattern=encrypt&lang=nl

edit:
ik weet niet of de CRYPT functie gebruikt maakt van de mcrypt module overigens

[ Voor 28% gewijzigd door Helmet op 28-05-2004 12:29 ]

Icons are overrated


Acties:
  • 0 Henk 'm!

  • Devilfish
  • Registratie: Augustus 2001
  • Laatst online: 17-09 13:34
Helmet schreef op 28 mei 2004 @ 12:27:
misschien heb je hier iets aan http://nl3.php.net/manual-lookup.php?pattern=encrypt&lang=nl

edit:
ik weet niet of de CRYPT functie gebruikt maakt van de mcrypt module overigens
er is geen decrypt functie voor crypt, dus dat gaat niet echt werken.
Evilbee schreef op 28 mei 2004 @ 12:19:
Ik weet niet wat je met die id's doen, maar als je ze in een database hebt staan. Dan zou je eventueel een extra colom er bij kunnen zetten met een random hashcode door middel van md5 oid. Dan heb je een soort van twoway manier waar je mee kan werken.
zit wel wat in om de unique ref alvast op te slaan in db, al heb ik denk ik liever een functie die het uitrekend vanuit het id.

Acties:
  • 0 Henk 'm!

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Ok het is niet helemaal "encrypten" maar een vriend van me vroeg me dit laatst ook en ik stelde voor om het als volgt te doen. Het betrof hier geen mega gevoelige data, en ik neem aan dat dat bij jou ook niet het geval was. Ook was het idee hierachter hetzelfde, om geen oplopende nummers te krijgen.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?

function xor_string($string, $key)
{
    $buf = '';
    $size = strlen($string);
    $keysize = strlen($key);
    for ($i=0; $i<$size; $i++)
        $buf .= chr(ord($string[$i]) ^ ord($key[$i % $keysize]));
    return $buf;
}

$key = 'xy';
$decode = 'abcdef';
$encode = base64_encode(xor_string($decode, $key));
$decode = xor_string(base64_decode($encode), $key);

echo 'encode: ' . $encode . '<br />';
echo 'decode: ' . $decode . '<br />';

?>


simpel en het werkt voor wat je wilt hebben denk ik :)

[ Voor 9% gewijzigd door Scorpion op 28-05-2004 12:43 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Devilfish schreef op 28 mei 2004 @ 12:02:
Idee\"en over een andere oplossing voor link guessing mag natuurlijk ook (Niet via truukjes als met POST variabelen).
offtopic:
Teveel in TeX gewerkt? ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Devilfish
  • Registratie: Augustus 2001
  • Laatst online: 17-09 13:34
dank Scorpion! dat werkt idd goed. @NMe84: ja :)

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 16:28
Je kunt natuurlijk ook random id's genereren.

Acties:
  • 0 Henk 'm!

  • klinz
  • Registratie: Maart 2002
  • Laatst online: 17-09 15:24

klinz

weet van NIETS

Mijn vraag zou dan zijn: waarom moet het two-way zijn? Bij een gegeven hash kun je toch altijd de juiste gegevens uit de database halen?

Acties:
  • 0 Henk 'm!

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

klinz schreef op 28 mei 2004 @ 14:47:
Mijn vraag zou dan zijn: waarom moet het two-way zijn? Bij een gegeven hash kun je toch altijd de juiste gegevens uit de database halen?
ik denk omdat hij in de database wel mooie opvolgende nummertjes wil hebben :)

Acties:
  • 0 Henk 'm!

  • Devilfish
  • Registratie: Augustus 2001
  • Laatst online: 17-09 13:34
in de database staan idd mooi oplopende nummertjes... auto_increment :) en random id's is niet handig als je al een db hebt met 20000 records (wat er nog veel meer moeten worden trouwens)
Pagina: 1