2010-06-01 5 views
0

J'ai codé un jeu de base en JavaScript et je travaille sur un système de score élevé, mais comme il est codé en JavaScript, nous savons tous qu'il est incroyablement facile d'ouvrir les outils de développement de Firebug ou Chrome. éditez le code. Par exemple, ajouter un multiplicateur au score.Test si JavaScript a été modifié

Est-ce que quelqu'un sait soit A) un moyen de vérifier le JavaScript n'a pas été modifié et/ou B) un moyen sûr d'afficher les scores

Répondre

4

Il n'y a rien que vous pouvez faire. Le script lui-même serait responsable de la vérification, et ne peut donc pas être approuvé. En règle générale, les gens décident de: a) ne pas se soucier assez, et retirer de toute évidence les faux scores élevés s'ils apparaissent, b) se connecter sur le serveur combien de temps l'utilisateur était sur la page avant de soumettre pour voir si c'était raisonnable , ou c) prendre le chemin le plus ardu pour enregistrer toutes les actions du jeu, les envoyer et rejouer le jeu sur le serveur (probablement en combinaison avec l'option B).

Cependant, ceux-ci protègent à un niveau très basique. Dans une certaine mesure, tout ce que vous pouvez faire, c'est que cela ne vaut pas la peine de vous attaquer; vous ne pouvez jamais l'empêcher complètement.

+0

+1 pour un bon résumé du problème ... –

+0

+ 1 & réponse acceptée - très beau résumé, semblable à ce que je pensais, je travaille sur un combo de B + un peu de C (côté serveur de mise à jour marquer toutes les 10 secondes et voir si possible en connaissant un "score" maximum par seconde) –

+0

J'ai oublié de mentionner que je suis également en train d'inclure un hachage md5 pour valider, où le hachage est généré en javascript obfusqué (juste pour ajouter une autre couche). –

2

Si cela est possible, vous pouvez suivre les événements qui se produisent dans le jeu, puis les renvoyer au serveur pour vérification. Si le score de tous les «événements» ne correspond pas au score que vous avez reçu, vous savez qu'il est invalide. Si vous le souhaitez, vous pouvez même envoyer les événements au fur et à mesure et valider périodiquement le score.

Vous pouvez également utiliser le serveur pour calculer le score et supprimer cette logique du JavaScript. Mais un client pourrait encore déformer les "événements" qu'il vous envoie.

Bien sûr, cela ne rend pas votre application vraiment sûre, seulement plus difficile à casser.

+0

+1, j'allais suggérer quelque chose de similaire, peut-être avec un horodatage sur chaque événement et une vérification côté serveur pour voir si les différences d'horodatage sont réalistes. Comme vous le dites, cependant, rien n'est définitif et JavaScript n'est pas idéal pour ces choses. –

Questions connexes