2010-05-10 4 views
11

Avec tout le battage médiatique sur JavaScript et HTML5 remplaçant Flash, je voulais savoir - Comment serait-il possible de protéger le code js côté client? Bien sûr, il est possible de l'obscurcir, mais cela ne ferait que le rendre un peu plus difficile. Aussi, pour les jeux qui soumettent des scores élevés au serveur, ne serait-il pas incroyablement facile de modifier ces scores avant qu'ils ne soient envoyés au serveur? Je sais que même les fichiers Flash peuvent être décompilés, mais ils peuvent être obscurcis et la décompilation flash n'est pas aussi simple que de modifier les données dans JS - pourrait être fait facilement en utilisant un plugin tel que Firebug. J'aimerais connaître le point de vue de tout le monde à ce sujet.Sécurité/Code de protection en JavaScript

Répondre

8

Javascript, étant analysé sur le client, n'est jamais sûr à 100%. Il y aura toujours être des moyens de savoir ce qu'il fait. Il y a quelques jours, j'ai même vu un outil qui décompresse javascript emballé, donc la seule chose que vous pouvez vraiment faire est d'utiliser des noms de variables «moche» (ou, en fait, faire un javascript packer transformer vos «bons» noms de variables en court/moche/Pour protéger les résultats des jeux, vous devez déplacer une partie de la logique du jeu vers le serveur afin que le client ne puisse pas envoyer de résultats arbitraires. Récapitulatif: Ne mettez pas de secrets dans le code javascript et ne faites confiance à aucun élément provenant du client, qu'il provienne d'un formulaire ou qu'il soit généré/envoyé via javascript.

+0

Merci. Même si je déplace une partie de la logique du jeu, l'algorithme de génération de données à envoyer au serveur est toujours très ouvert. En outre, ce ne serait pas un facteur important dans l'adoption de HTML5 en particulier en ce qui concerne les jeux? Pourquoi/comment les gens prédisent-ils que le flash est en voie de disparition? – BlueSilver

+1

Flash est presque aussi peu sécurisé que javascript. Il y a de bons décompilateurs d'actionscript et même si cela ne serait pas possible, vous pouvez toujours renifler la requête envoyée au serveur. En plus de cela, beaucoup de jeux flash sont juste pour le plaisir, pas pour des récompenses, etc. Peu importe si les gens trichent là ou pas. – ThiefMaster

+0

Désolé de demander cela à plusieurs reprises, mais ce ne serait pas un facteur important pour l'adoption de HTML5? En outre, flairer la demande n'est pas aussi facile que de voir la source. De plus, il existe des portails de jeux flash où obtenir des scores élevés pourrait vous rapporter de l'argent, donc la triche aurait de l'importance ici. – BlueSilver

0

Vous dites que pour un jeu qui envoie des scores élevés au serveur, il serait trop facile de modifier javascript et de forger une requête? À l'exception du cas, lorsque vous utilisez une cryptographie sur le client, c'est le moyen le plus simple de falsifier une telle requête sans même analyser le script mais en envoyant la requête elle-même. Tout ce que vous envoyez entre le serveur et le navigateur peut être facilement visualisé sur ordinateur, analysé et modifié.