Ho un piccolo gioco che mi piacerebbe tenere traccia degli hiscores globali. La base è semplice: nome utente e punteggio vengono inviati a un server per la memorizzazione e il polling successivo. Tuttavia, come faccio a garantire che questi punteggi non siano falsi?
Ovviamente, solo accettare un utente + punteggio cieco consentirà alle persone di telnet nel punteggio desiderato. Per combattere questo, ho pensato due approcci:
-
Checksumming - Oltre al punteggio e al nome utente, l'applicazione invia un checksum dei due utilizzando un algoritmo oscuro e salt. Se lo stesso checksum non viene sommato, il server lo rifiuterà. Tuttavia, quanto è facile da decodificare il checksum utilizzato, considerando che si tratta di un'applicazione Android?
-
Invio dell'intero gioco - Oltre al punteggio utente +, vengono inviati anche i passaggi necessari per raggiungere il punteggio. Il server emula quindi il gioco per vedere se i passaggi generano lo stesso punteggio e, in caso contrario, lo respinge. Lo considero il più sicuro, ma per alcuni tipi di giochi questo può essere molto difficile da fare, poiché i fattori sono troppo numerosi.
C'è una via di mezzo? Ci sono altri metodi da prendere in considerazione? Non è che questo sia di vitale importanza per la sicurezza nazionale o altro, ma preferirei che gli utenti non rimangano con "HackedYourGame: 999999999 punti" in cima alla lista.