Okay. Here goes...
Her er så opskriften. Du skal bruge følgende ingredienser:
1. stk. hashfunktion (noget a'la den ovennævnte checksum)
1. stk. kode som bliver brugt til denne applikation alene.
Et bundt assorterede strengfunktioner.
Hovedideen er at man på serveren tager checksummen af parametrene sammen med koden. Herefter sender du parametrene og checksummen (men ikke kode) afsted til browseren som gendanner checksummen og sammenligner den med den som er blevet sendt fra serveren.
Det samme kan man også gøre den anden vej - dvs. fra browser til server. Hvis flash-spillet f. eks. gerne vil sende besked om at brugeren flemse har tjent 2000 points, kunne man forestille sig denne URL:
http://www.minspilside.dk/spil.php?bruger=flemse&points=2000Det kan man jo nemt bruge til snyd, så idéen er at tage parameterene i en særskilt streng, som f. eks:
bruger=flemse&points=2000
Dernæst katenerer man koden - hvis det f. eks. er "æblegrød", bliver strengen til
bruger=flemse&points=2000æblegrød
Herefter tager man checksummen af den færdige streng. Lad os antage at den bliver 74324. Det sender man så med til den anden side, så URL'en bliver:
bruger=flemse&points=2000&checksum=74324
Bemærk venligst at passwordet ikke optræder i det som man sender med over.
Når disse oplsyninger når frem, beregnes checksummen igen (passwordet er en del af programmet på den anden side), hvorefter at man checker at den nyberegnede checksum og den checksum som blev sendt afsted faktisk stemmer overens. Dermed kan man være rimeligt sikker på at den pågældende URL kun kan være dannet af noget eller noget som havde adgang til koden (nemlig selve flash-dimsen).
Det var den generelle opskrift. Dernæst skal du blot finde en god hashfunktion.
Du kan lave sådan en på mange forskellige måder. I denne sammenhæng er det måske ikke så vigtigt at den er særligt sikker - bare den er nem at implementere. Hvis du har adgang til MD5 eller SHA1 på begge sider (jeg ved at du har det i PHP, men ved ikke om det er i Flash - prøv eventuelt at checke dette link:
http://www.macromedia.com/devnet/mx/flash/extreme/extreme003.html), så brug en af dem.
Ellers så gør dette her:
0. Lad c være variablen hvor checksummen er lagret når algoritmen er færdig.
1. Tag første char i den streng som skal sendes og oversæt den til den korresponderende byte som lægges i variablen b.
2. Lad c += b*611957 modulo 611953.
3. Gentag punkt 1-2 for den næste char indtil at der ikke er flere.
4. Værdien i c er din checksum.