25. december 2012 - 17:59Der er
12 kommentarer og 1 løsning
Send sikkert variabler til server
Hvordan sender man variabler til sin server uden at brugerne kan ændre i dem?
Jeg har lavet nogle små spil, hvor ens score bliver gemt i en database, så der kan laves en highscore. Problemet er bare at nogle brugere, ved hjælp af en tilføjelse til firefox, kan ændre i den score, der bliver sendt til databasen. Hvordan forhindre jeg det??
Hvad der foregår i browseren, er fuldstændig åbent. Hvis dit spil f.eks. fyrer en form af mod serveren, når spillet er færdigt - og spillets pointantal/score bliver sendt i et INPUT felt - vil der altid kunne rettes i pointantallet. Også selvom feltet er hidden, og brugeren ikke umiddelbart kan skrive i det.
En form kan der altid manipuleres med, eller et script kan simulere en form og sende de ønskede data.
Hvis du vil lave et spil, som brugeren ikke kan fiddle med, må du gøre det i en teknologi, der ikke 'kan pilles i' - og det kan være overordentlig kompliceret på WWW =)
Som jeg forstår det, afvikles spillet alene på klienten, og data sendes til serveren.
Det bedste vil være hvis point-beregningen kan foregå på serveren. F.x. hvis det handler om at finde en optimal vej, som giver point, så sender man brugerens vej til serveren, og lader den beregne point.
Dermed er der ingen grund til at stole på noget på klienten.
Kan du ikke det, så er der ingen 100% sikker vej. Det er ikke sikkert, det behøver være 100%, så et par muligheder:
1) Kryptere point-tallet, og dekryptere på serveren. Problemet er at krypteringsalgoritme og dermed kodeord, skal være på klienten, og dermed vil kunne aflures.
2) Send point-tallet som klartekst, men en passende hash-værdi som kontrol. Det kunne være (ex: point=117): md5("nogetsuperhemmeligt:117"). Samme problem som 1) (men lad være med at sende md5("117") - det vil kunne aflures for nemt)
1) og 2) holder nok script-kiddies på lang afstand. Men ingen af dem er sikre, som sådan.
Beklager jeg først svarer nu, men gik helt død i projektet..
Ved mine spil skal man løse nogle opgaver på tid, derfor kan det ikke lade sig gøre på serversiden :-/
Jeg må i gang med nogle algoritmer. Overvejer at sende fx 100 variabler med tiden (med hver sin algoritme) afsted, og så på server siden kun bruge en bestemt af dem.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.