2017-02-27 1 views
0

Je crée un site de jeu et quand un joueur a fini de jouer, je veux que le site mette à jour le score vers une base de données. Maintenant, mon seul problème est, le joueur peut facilement tricher leur score en utilisant des méthodes javascript/code dans le navigateur. Comment puis-je faire ceci?Comment puis-je empêcher les utilisateurs d'obtenir un score plus élevé illégitimement sur un jeu javascript?

+0

alors vous devriez le désinfecter avant de le mettre dans la base de données ... –

+0

Stockez les scores de jeu dans les variables PHP dès la fin de la partie. Tout ce qui est stocké dans javascript peut être négligé. –

+5

Copie possible de [Empêcher les jeux Javascript de bidouiller/piratage] (http://stackoverflow.com/questions/6320996/prevent-javascript-games-tweaking-hacking) – mickmackusa

Répondre

0

Le joueur peut facilement tricher en utilisant les méthodes/codes javascript dans le navigateur.

obscurcissement: Si votre objectif est d'empêcher que cela se produise facilement, vous pouvez obfuscate votre code JavaScript. Modifier: Après avoir lu @mickmackusa's link, IIFE sont un moyen rapide d'atteindre ce que vous cherchez.

Signatures: Si votre objectif est d'empêcher que cela se produise jamais, vous devriez envisager d'utiliser un verifiable signature or hash. Plus l'application est lourde, plus cela peut être difficile. Par exemple, si la signature est générée côté client via JavaScript pur, votre code would still leak everything an attacker would need to fake the signature. La conception acceptée consiste à déplacer les composants privés côté serveur où ils peuvent être protégés.

L'obfuscation est assez efficace tant que le fardeau de la désobfuscation est beaucoup plus grand que les récompenses (ou les risques) associés à un attaquant.

+0

Tout ce dont j'ai besoin de m'assurer, c'est que le score envoyé à la base de données est le score correct – blendy

+0

Minimiser la façon dont le problème se produit n'affecte pas la solution finale. Si vous avez besoin de garantir l'authenticité, utilisez une méthode vérifiable inaltérable. Si vous voulez filtrer 99% des pirates, faites en sorte que le code soit si déroutant que vous ne pouvez même pas le comprendre après l'avoir étudié comment il est envoyé au back-end. – tresf

+0

En supposant que le problème survient principalement lorsque les personnes sont sur un tableau de bord, vous pouvez également choisir d'utiliser un ID unique pour chaque score dans la base de données, puis afficher l'écran final qui demande simplement de modifier cet enregistrement. Ce n'est toujours pas infaillible et je vous recommande de stocker une forme d'horodatage sur la session afin que quelqu'un ne nettoie pas votre base de données propre. C'est quand même un mauvais design. Si vous souhaitez le sécuriser, vous devez utiliser une méthode de signature de données sécurisée et fiable. – tresf