Ötletek tervezéséhez biztonságos, „Olcsó” módszer megerősíti a kliens oldali játék eredménye

szavazat
3

Ez több olyan rendszer kialakítása kérdés / kihívás, mint egy kódoló kérdés.

Alapvetően gondolok dobott össze egy Bejeweled -esque játék a Facebook segítségével csak HTML, CSS és JavaScript. Ez többnyire ki a vágy, hogy megtanulják a kis buktatói Fbjs keresztül nem triviális projekt.

Tehát itt a helyzet. Fejlesztése során a Facebook, a tényleges API hívások nagyon drága; Nem csak ott van egy további POST a Facebook szerverek, ott is az API hívások maximális és fojtás kell aggódnia. Dióhéjban, a kevesebb hívást a Facebookra, annál jobb. Ha ezt kombináljuk időzítési problémák még ez egyszerű puzzle játék, és jó okunk van, hogy agresszíven számának minimalizálása visszahívások általában.

Mivel nem biztonsági szakértő, itt a tervezés jöttem fel:

  1. Beágyazása egy véletlen mag a játék oldalán.
  2. Használja ezt a magot, hogy megteremtse a játéktábla (Csakúgy, mint pótlólag szükség szerint).
  3. Csípés a mag (xor, konkatenációja hash, valami ilyesmi) után minden játékos mozog, az idő alapján, mivel a múlt mozog. Edit: talán érdemes is az aktuális lépés hozott mutáló a mag.
  4. Miután a játék befejezése tegye vissza a következő: játék kezdési időpont, minden lépés szedni és mikor, és a kliens oldali eredményeket.
  5. A kiszolgálón futtassa újra a játékot a megadott adatokat, józanság ellenőrzi a kezdési időpont, és mozgassa alkalommal, majd erősítse meg, hogy az eredmények megfelelnek.
  6. Hogy enyhítsük a szolgáltatás megtagadása, a játék maga lesz csípett, hogy egy győzelem viszont X állapotban.
  7. Hogy visszatartsa a szerver használják, mint a „oracle” a fajta, a felhasználó kiküldetés vissza érvénytelen játék lesz tiltva néhány konstans ideig X (ahol X a sorrendben perc).

Ez a kialakítás szükséges három Facebook hívás egy játék játszott: az egyik, hogy tárolja a véletlen mag, mielőtt a játékot, az egyik, hogy hozza el a meccs után befejeződött, és az egyik, hogy frissítse a játékos pontszáma, ha a játék érvényes.

Ezzel csak azt akarom, hogy igazolást a rendszer ellen egyenesen felfelé pontszám spoofing ( http: // ...? Myscore = 999999999 , vagy hasonló). Azt is szeretnék, hogy enyhítse „előretekintés” támadások, ahol a felhasználói tudja, milyen darabok jönnek a tábla következő. Szolgáltatásmegtagadási támadások a szerver hosting (szándékos vagy más módon) is meg kell akadályozni.

A tényleges kérdés, valaki meg tudja látni a hiba ebben a design? Ekvivalensen, van egy egyszerűbb kivitel, amely megfelel az én feltételeket?

Megjegyzés: Tisztában vagyok azzal, hogy milyen felesleges ez valószínűleg, de egy érdekes kérdés mégis.


Megyek, hogy megpróbálja dobni néhány számot fel ide További részletes szemléltetésére érveim, ezek elég durva, de remélem hasznos.

Feltételezve, hogy egy 10x10 játéktábla, vannak ~ 200 lehetséges lépések (swapping két szomszédos darab), amelyek többsége érvénytelen. Tegyük fel, hogy átlagosan 5 érvényes mozog per „be”. Ha korlátozzák játékos tevékenységek a keret 50 30.000 ezredmásodperc, vannak 149.750 potenciális új hash feltéve, hogy a „csípés” algoritmus nem dobja bit; Úgy érzem, abban mondjuk van legalább 10.000 potenciális új hash amelyet úgy kell kiszámítani, a támadó által feltételezve titkosított biztonságos hash alkalmazunk. Ha dobja a min-max algoritmus ezt, a döntési fa felrobban nagyon gyorsan. Dobj egy játék ülésen lejárati ebben, mondjuk 30 perc, és úgy vélem, a támadás, mert azonos bonyolultságú írás egy kicsit bot programot játszani melyik ésszerűen nem lehet megvédeni ellen.

A kérdést 26/05/2009 22:04
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
3

Ha az ügyfél kódot kiszámítja a következő darab, és akkor nem lehet elrejteni ezt az algoritmust nagyon jól, majd néhány unatkozó egyetemista fog rájönni. Ennek eredményeként képesek lesznek létrehozni egy hatalmas pontszám, és legyőzni a szándékai.

Válaszolt 26/05/2009 22:14
a forrás felhasználó

szavazat
0

Azt szokták mondani, hogy lehetetlen csinálni. Miért? Nem lehet bízni a kliens - én is csak elemezni és teljesen átírni a kliens oldali kódot, és visszatér bármi értékek szeretem. Az egyetlen módja annak, hogy védelmet nyújt a csalás és mindenféle támadások, hogy végre a logika a szerver - az ügyfél csak összegyűjti felhasználói és megjeleníti a kiszolgáló kimenet. De ez teljesen ellenkezik a tervezési célt, hogy minél kevesebb szerver hívások.

Válaszolt 26/05/2009 22:20
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more