As title. Working on a puzzle game with levels and a scoring system. Online high scores (one for each level) would be a nice addition to the local scores to induce competition and maybe make the app more sticky. However I'm concerned about ensuring fake scores don't get added, score spamming etc.
As for the creating a binary or form to send to the server, I'm thinking:
Also, how can the binary be created without revealing how it is made? ie what is to stop a hacker from dissecting the code and just calling the routine used to make the binary in the first place? Calling something like
and sending the result would bypass any and all protection described. A code obfuscator (and possible different coding practices) is the only thing I can think of that will help.
Opinions and experience welcome. If I'm going down the wrong path please let me know
- What is the best way to do this using shared hosting? My current hosting is the deluxe on linux from here: Web Hosting | Secure Hosting Plans with Unlimited Bandwidth
- What language server side? No experience with any of them, but am willing to try and hack my way through. Preferably something a user cannot see to reverse the validation (or is that stupid).
- Is this futile? Should I only implement rudimentary protection to protect from the unskilled?
As for the creating a binary or form to send to the server, I'm thinking:
- Custom binary format.
- Device fingerprint of some kind, so the same binary cannot be sent from multiple devices.
- Timeout of a certain interval between creating binary and server receiving, and the server can only receive 1 binary from a certain device in the same interval.
- Validate the hell out of what they're sending. If it's a fixed level, send their move list in the binary and double check it's possible. If it's a level with random elements, send the whole level and recreate their game.
- Redundancy in the binary, with elements repeated but in different formats to weed out binary edits.
- Juggle the bytes so if decrypted/not encrypted, it still looks unintelligible.
- Then file encryption
Also, how can the binary be created without revealing how it is made? ie what is to stop a hacker from dissecting the code and just calling the routine used to make the binary in the first place? Calling something like
Code:
byte[] createbinary(long score, long levelid, ...)
Opinions and experience welcome. If I'm going down the wrong path please let me know

.