Men kan man så ikke snyde ved at stjæle koden ned til ens egen computer, lave mit lille spil nemmere og sende en meget større score til den samme side?
Skulle jo helt ikke kunne lade sig gøre, hvis du forstår hvad jeg mener...
Okay, trumf kom først. Men jeg kan lige tilføje at du jo har mulighed for at få dit javascript til at poste siden (eller evt. en skjult side i en iframe e.lign.) for at sende resultatet til serveren med det samme.
Man kan lave noget med at åbne vinduer, men da mange har popup stoppere, så er det ikke en helt god ide. Ellers skal du overveje AJAX, eller HttpResponse, som er noget ala det samme, og som virker i classic ASP. Dog ikke i lidt ældre Opera browsere...
Du vil altid kunne snyde, da du har sendt hele scriptet til klienten, og derved giver ham mulighed for at ændre i koden og afvikle det. Du bør dog kunne lave et tjek på nogle servervariables for at se hvilken side han kommer fra, men den kan nok også omgåes.
Det med at poste formen er såmænd meget simpelt Lav en standard form: <form name="minform" action="gemresultat.asp" action="post"> <input type="hidden" name="resultat" value=""> </form
Og sidst i dit javascript skriver du så:
document.minform.submit();
Alternativt, hvis du placerer formen i et andet vindue: window.formframe.document.minform.submit();
Jeg er ikke sikker på min javascript, det er heller ikke min superstærke side. Men den har sådan set samme sårbarhed som trumf's idé.
Du kan gøre det meget svært at snyde hvis du feks sender en variable mere med over, som du krypterer, og bliver verificeret på asp siden i iFramen, men det må være en del af dit næste spm :)
Jeg har da sovet i timen. Vi skal jo putte noget i resultat-feltet, inden vi submitter formen. I samme form kan du lave en <input type="text" name="navn">, hvor brugeren så kan indtaste sit navn. Men det skal så gøres inden du poster formen, så jeg vil nok sende resultatet og navnet til serveren af to gange, og så skrive noget asp der sørger for at kæde det sammen.
For at bruge javascript til at skrive til et element i en form, gør du noget lignende: document.minform.resultat.value = totalhits;
Jeg lurede også på noget kryptering af resultatet, men jeg kan ikke lige komme i tanke om en måde, så den ikke umiddelbart kan brydes.
Hvis du laver et tidsstempel krypterer det og sender det med over. Fanger det der står og sammenligner det med samme tidsstempel på den anden side, som selvfølgelig også krypteres, så skal man altså være god til at gætte for at snyde. Det er i øvrigt også den slags man gør når man skal have sikre login procedurer. Læs evt mere om SHA1 eller MD5, som er måderne at gøre det på.
Tror jeg desværre ikke jeg har tid til at kaste mig ud i, men jeg har da fået lidt inspiration. Jeg ved ikke rigtig hvem der skal have point her. I kan eventuelt dele?
Det vil give dig problemer hvis tiden ikke er stillet ens på klienten og serveren. Og en person der vil snyde, kan så vidt jeg kan regne ud, og nemt omskrive et sådan script så han kan sende et falsk tidsstempel med. Nu får du et svar, men jeg synes du skal tage dem selv, da vi ikke løste dit problem.
Problemet kan løses med både mit javascript og truelz's form.
mht krypteringen, så er det et tidsstempel fra serveren fra siden der sender og den der modtager. Det vil virke da der kun er et splitsekund fra den sender til den modtager...
Hvis det skal brydes skal brugeren gætte serverens tid og klikke i samme splitsekund som tiden i det tidsstempel denne selv prøver at lave, vel at mærke på det tidspunkt som brugeren gætter serverens tid er.
Den holder ikke, den der. Jeg så i en anden post hvor du bruger et tidsstempel til at frasortere bots der poster i en gæstebog, og det er en kanon idé. Men den holder ikke her, for brugeren kan jo bare lave scriptet om, så den istedet for at sende resultatet fra spillet, sender en konstant med en kanon score. Så vil det jo stadig være det samme tidsstempel.
flodhesten >> Det er ved Gud ikke videre begavet at skrive det link, du bruger i dit eksempel! De, der tidligere har gjort det, har fået deaktiveret deres bruger.
Hvad i alverden får folk dog ud af den slags papnakkede, infantile indfald ...?!??!!!
Men det med gæstebogen har jo ikke noget med kryptering at gøre, det er kun et spørgsmål om tid. I dette tilfælde er tidsstemplet kun en "nøgle" i krypteringen. Du kan bruge hvad som helst, bare det er noget der ændrer sig og som udregnes i samme øjeblik du klikker på "send", derved bruger du serverens tid fra du klikker send til den næste side modtages. Hvis du kun tager timer, minutter og sekunder med, har du en buffer på et sekund, men det er lige det som en evt. "snyder" skal gætte, som er serverens tid.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.