Ik ben bezig met het ontwikkelen van een Windows applicatie (C# .NET) welke communiceert met een web service (WCF). De applicatie draait op de achtergrond terwijl de gebruikers een race spel spelen, en verzamelt data zoals hun rondetijden. Deze worden daarna opgestuurt naar de webservice, welke ze in een database opslaat.
Mijn probleem is eigenlijk vrij eenvoudig: hoe voorkom ik dat de meer technisch aangelegde mensen mijn applicatie eventjes decompilen en "nep rondetijden" gaan doorsturen?
De webservice heeft een method "UploadLaptime" die naast wat user authentication een paar eigenschappen van een ronde accepteert, onder andere de rondetijd, wat sector tijden, gebruikte auto/track, etc.
Op het moment zou het heel eenvoudig zijn voor iemand om een eigen client te schrijven die een nep rondje upload met een ronde tijd die veel beter is dan hij werkelijk kan rijden. Voor zover ik kan zien heb ik geen enkele manier om 100% zeker te zijn dat een ronde "echt" is en niet zomaar ingevuld in Fiddler of wat dan ook.
Ik zou natuurlijk de data encrypted kunnen opsturen, maar wat schiet ik daar mee op? De encryptie zal op de client moeten gebeuren dus met een beetje goeie decompiler kun je dat ook wel nabouwen. Dit is eigenlijk het probleem waar ik tegen aan loop: alles wat ik kan bedenken om dit tegen te gaan verloopt op de client en kan iemand dus ook gewoon na doen, met wat moeite.
Als er niets tegen te doen is, hebben jullie dan misschien wat tips wat ik kan doen om het in ieder geval wat moeilijker te maken? Als het wat moeite kost dan vertrouw ik mijn doelgroep er wel op om niet vals te spelen, maar momenteel is het weel heel erg gemakkelijk heb ik het idee...
PS:
Ik zou deze applicatie later ook graag open source maken dus middelen tegen decompilen helpen ook niet echt. Hopelijk zijn er betere alternatieven?
Mijn probleem is eigenlijk vrij eenvoudig: hoe voorkom ik dat de meer technisch aangelegde mensen mijn applicatie eventjes decompilen en "nep rondetijden" gaan doorsturen?
De webservice heeft een method "UploadLaptime" die naast wat user authentication een paar eigenschappen van een ronde accepteert, onder andere de rondetijd, wat sector tijden, gebruikte auto/track, etc.
Op het moment zou het heel eenvoudig zijn voor iemand om een eigen client te schrijven die een nep rondje upload met een ronde tijd die veel beter is dan hij werkelijk kan rijden. Voor zover ik kan zien heb ik geen enkele manier om 100% zeker te zijn dat een ronde "echt" is en niet zomaar ingevuld in Fiddler of wat dan ook.
Ik zou natuurlijk de data encrypted kunnen opsturen, maar wat schiet ik daar mee op? De encryptie zal op de client moeten gebeuren dus met een beetje goeie decompiler kun je dat ook wel nabouwen. Dit is eigenlijk het probleem waar ik tegen aan loop: alles wat ik kan bedenken om dit tegen te gaan verloopt op de client en kan iemand dus ook gewoon na doen, met wat moeite.
Als er niets tegen te doen is, hebben jullie dan misschien wat tips wat ik kan doen om het in ieder geval wat moeilijker te maken? Als het wat moeite kost dan vertrouw ik mijn doelgroep er wel op om niet vals te spelen, maar momenteel is het weel heel erg gemakkelijk heb ik het idee...
PS:
Ik zou deze applicatie later ook graag open source maken dus middelen tegen decompilen helpen ook niet echt. Hopelijk zijn er betere alternatieven?
[ Voor 4% gewijzigd door NickThissen op 08-02-2016 14:17 ]