Spil!

Tags:    c++

<< < 123 > >>
Hej
Jeg er igang med at lave et C++ spil i DirectX. Jeg har bare et problem, jeg vil gerne kunne lave en bro fra C++ til PHP, så man kan se spil statistikker på hjemmesiden. Håber i kan hjælpe:D




Hej Robert,

Som sagt, sikres mest.
- ikke sikres helt.

Metoden tillader bl.a. også ssl certifikat udbygning, såvel som anden server validering på baggrund af modtagne/eksisterende data.

Forslaget er baseret på et forventet ønsket sikkerheds niveau, afhængigt af investering af ressourcer. Noter jo, at vores netbanker ikke engang er skudsikre.

"Udgivelsen [CD-KEY]" eller download/registrering af spillet kan fungere som en unik kryperingsnøgle, som forhindrer manipulation igennem public key krypering og message validation. Dette KAN foretages i PHP.

Kombiner det med et SSL certifikat, og du begynder at nærme dig grundlæggende netbank sikkerhed.

Tilføj nu også dual-server handshaking og synkronisering [at spilleren sender til 2 servere, som hver har deres public key/message validering] og lidt statistik på "usansynlige points-hop" samt lidt basic encrypt/descrypt logik [hidden code]. Så står du meget, meget stærkt på sikkerheden.

Med venlig hilsen
Ieet





Indlæg senest redigeret d. 11.02.2009 13:20 af Bruger #12836
Metoden tillader bl.a. også ssl certifikat udbygning, såvel som anden server validering på baggrund af modtagne/eksisterende data.

Forslaget er baseret på et forventet ønsket sikkerheds niveau, afhængigt af investering af ressourcer. Noter jo, at vores netbanker ikke engang er skudsikre.

"Udgivelsen [CD-KEY]" eller download/registrering af spillet kan fungere som en unik kryperingsnøgle, som forhindrer manipulation igennem public key krypering og message validation. Dette KAN foretages i PHP.

Kombiner det med et SSL certifikat, og du begynder at nærme dig grundlæggende netbank sikkerhed.

Tilføj nu også dual-server handshaking og synkronisering [at spilleren sender til 2 servere, som hver har deres public key/message validering] og lidt statistik på "usansynlige points-hop" samt lidt basic encrypt/descrypt logik [hidden code]. Så står du meget, meget stærkt på sikkerheden.


Nej. Ikke så længe at dataene ligger på klienten og bare sendes til serveren. Hvis spillet foregår på serveren så skal serveren ikke "stole på" at brugeren er nået til level 100000, for det ved denn allerede.

Og det også sådan at netbanker fungerer. Al data ligger på serveren, og vi kan som bank kunder så manipulere de data, men altså ikke sige "jeg overfører lige 100 kr. til min anden konto så nu skal der stå 1.000.000.000 kr.". Den går ikke.

Og kryptering hjælper heller ikke. Det kan i dette tilfælde allerhøjst fastslå identitet (at serveren er hvem han siger han er og at klienten er, hvem han siger, at han er), og at dataene ikke er manipuleret mellem klient og server. Krypteringen/signeringen kan ikke sikre, at klienten ikke selv har manipuleret dataene.




Hej Robert,

Det er et spørgsmål om at netbanken ikke "udstiller" et "interface" til at ændre kontoens beløb...

Skal klienten løbende opdatere checkpoints på hver enkelt bane, med en unik krypteret key [pyblic key kryptering baseret på CD-key eller registrerings key (eller brugernavn/adgangskode)], i rækkefølge, vil serveren afvise level 100000 indtil key 99999d er kommet og at der er gået minimum 30 sekunder siden da.

Det samme princip med points... du kan ikke få 10 points før du har fået 9 points.

Det er ikke fejlsikret, idet klienten vil kunne sende falske points værdier - og gøres dette i rækkefølge vil serveren acceptere disse.
Derfor kan der implementeres en "add et point" rutine, som indeholder en krypteret hashkey [Black box krypteret] med totalt antal points samtidig. Dermed vil der ikke kunne tilføjes points uden at brugeren foregående har kendskab til totalnøglen samt tidligere antal points og er den pågældende bruger.

Noter at der skal skelnes imellem sikkerhed imod andre brugeres misbrug, og den pågældende brugers misbrug.

Med venlig hilsen
Ieet





Indlæg senest redigeret d. 11.02.2009 14:10 af Bruger #12836

Hej Robert,

Det er et spørgsmål om at netbanken ikke "udstiller" et "interface" til at ændre kontoens beløb...

Skal klienten løbende opdatere checkpoints på hver enkelt bane, med en unik krypteret key [pyblic key kryptering baseret på CD-key eller registrerings key (eller brugernavn/adgangskode)], i rækkefølge, vil serveren afvise level 100000 indtil key 99999d er kommet og at der er gået minimum 30 sekunder siden da.

Det samme princip med points... du kan ikke få 10 points før du har fået 9 points.

Det er ikke fejlsikret, idet klienten vil kunne sende falske points værdier - og gøres dette i rækkefølge vil serveren acceptere disse.
Derfor kan der implementeres en "add et point" rutine, som indeholder en krypteret hashkey [Black box krypteret] med totalt antal points samtidig. Dermed vil der ikke kunne tilføjes points uden at brugeren foregående har kendskab til totalnøglen samt tidligere antal points og er den pågældende bruger.

Noter at der skal skelnes imellem sikkerhed imod andre brugeres misbrug, og den pågældende brugers misbrug.

Med venlig hilsen
Ieet



At sammenligne ovenstående med en netbanks sikkerhed er også meget forkert. Netbanker giver dig en mulighed for at ænde på data i banken, men du får ikke lov til at fortælle banken, hvordan verden ser ud. Du kan sige "Overfør 100 kr. fra konto A til konto B", og banken vil svare "Fint, der er nu X kr. på konto A og Y kr. på konto B".

Det vil svare lidt til at dit spil beder serveren om at accelerere din bil til 110 km. i timen. Serveren vil ikke acceptere at du bare sætter hastigheden til 110 km. i timen, for så hurtigt accelererer man ikke. Den vil heller ikke acceptere, at du siger "Jeg har lige kørt bilen til koordinat X,Y,Z". Serveren ved bedst.

Hvis serveren mener, at du kan gå én level frem pr. 30 sekund, så koder fuskeren sig bare til det. Det kan ikke lade sig gøre, hvis spillet foregår på serveren og klienten bare viser en præsentation af verden, som serveren siger, at den ser ud. DÉT vil være rigtig sikkerhed. Det andet er bare security by obscurity.




Hej Robert,

Du har ganske ret.
Det er security by obscurity ...
... dette er en billig og virkende løsning for en person som ikke har sin egen server ;)

Havde personen sin egen server, ville der ikke være problemet for applikationen i at tilgå databasen.

Og faktisk ville jeg ikke anbefale at spillet beder serveren om at få accelreret til 110 km/t [resultat orineteret].

Spillet skulle informere serveren "Jeg accelrer nu med M [jeg regner med at jeg kører X og ønsker Y]", og derefter modtage svar fra serveren om hastigheds resultatet "Du har accelreret M og kører nu Y".
Dette skulle så gentages, indtil spillet fik et svar fra serveren som angav den ønskede hastighed var nået.
[Ja, det vil være det samme som at lade spillet foregå på serveren]

Kommunikationen her vil dog være "dyr" for spillet at foretage på en online webhost - og derfor vil en skjult resultat orienteret kommunikation nok ønskes.

Med venlig hilsen
Ieet





Indlæg senest redigeret d. 11.02.2009 15:13 af Bruger #12836

Hej Robert,

Du har ganske ret.
Det er security by obscurity ...
... dette er en billig og virkende løsning for en person som ikke har sin egen server ;)

Havde personen sin egen server, ville der ikke være problemet for applikationen i at tilgå databasen.

Og faktisk ville jeg ikke anbefale at spillet beder serveren om at få accelreret til 110 km/t [resultat orineteret].

Spillet skulle informere serveren "Jeg accelrer nu med M [jeg regner med at jeg kører X og ønsker Y]", og derefter modtage svar fra serveren om hastigheds resultatet "Du har accelreret M og kører nu Y".
Dette skulle så gentages, indtil spillet fik et svar fra serveren som angav den ønskede hastighed var nået.
[Ja, det vil være det samme som at lade spillet foregå på serveren]

Kommunikationen her vil dog være "dyr" for spillet at foretage på en online webhost - og derfor vil en skjult resultat orienteret kommunikation nok ønskes.

Med venlig hilsen
Ieet



Du må bare ikke sige, at det er dette niveau netbanker ligger på, for det er meget forkert.

Sikkerheden (hvis den skal være komplet) ligger i, at det er servern, der ved, hvordan verden ser ud. Klienterne kan ikke ændre verden, men kan bede serveren om det. Serveren kan så vælge, om det kan lade sig gøre.

Dette kræver så, at man har adgang til en server, der kan følge med, men det er sådan kommercielle spil virker. Nogle af dem snyder lidt og "regner med" at serveren accepterer ens ændring til verden og reagerer på ændringen, før den er gennemført...spillere flytter sig i den retning og med den hastighed de bevæger sig...ikke i hak hver gang serveren sender en opdatering, men man kan ikke snyde ved lige pludselig at sige, "Hey, jeg har gennemført leven 7". Det ved serveren, for den har været med hele vejen.

Har man ikke brug for denne sikkerhed er det også fint nok bare at sende en opdatering fra klient til server, men det er altså ikke det niveau netbankerne ligger på.





Hej Robert,

Vi er enige, jeg mener dog at du fejl-læser det jeg har beskrevet.
Spilets informering til serveren skal ikke være den gyldige, men serveren svar til spillet er gyldigt.

Med venlig hilsen
Ieet







Hej Robert,

Vi er enige, jeg mener dog at du fejl-læser det jeg har beskrevet.
Spilets informering til serveren skal ikke være den gyldige, men serveren svar til spillet er gyldigt.

Med venlig hilsen
Ieet



Så er vi helt enige :)

Men for at serveren kan verificere brugerens oplysninger, er den nødt til at have været med hele vejen, og det kan være et problem...et problem man oftest løser ved at have gigantiske maskinparker stående (hvis man har pengene til det, hvilket firmaer som Blizzard har).




Hej Robert,

Og fordi at personen som startede tråden ikke har enorme maskinparker [og ikke engang egen server], anbefalede jeg den enkle og billige security by obscurity løsning.

Med venlig hilsen
Ieet





Indlæg senest redigeret d. 11.02.2009 16:22 af Bruger #12836
Tusind tak for alle de gode svar..
Jeg har været på ferie i nogle dages tid, så har ikke haft mulighed for at svare løbende, men tak alligevel. :D



<< < 123 > >>
t