Je suis en train de planifier un jeu construit avec JavaScript et HTML5.
Je n'arrive pas à comprendre comment empêcher quelqu'un de simplement copier le code JavaScript du serveur Web et créer son propre jeu avec ce jeu (ce n'est pas ma préoccupation principale), ou de substituer ses propres fonctions JavaScript et de créer un espoir pour des clients fiables. sauvage si le jeu devait finalement supporter le mode multijoueur.
Peut-on faire quelque chose pour empêcher quiconque de lire le code JavaScript?
Si ce n'est pas le cas, tout le traitement du jeu doit-il avoir lieu sur un serveur quelque part, les seules responsabilités du client étant de capturer les entrées de l'utilisateur et de dessiner des graphiques?
html5
javascript
client-server
Christian
la source
la source
Réponses:
Conservez toutes vos données et logiques de jeu sur le serveur. Une partie du jeu côté client peut quand même être copiée à l'aide des outils appropriés (même si c'est en Flash ou en Java), alors acceptez-le et ne vous en souciez pas trop.
Pour que votre javascript reste moins copiable, en raison d'une mauvaise lisibilité, vous pouvez le réduire . Quoi qu’il en soit, c’est une bonne pratique car le téléchargement du site de jeu est plus rapide.
la source
C'est là que la loi aide. En pratique, cela ne semble pas arriver très souvent.
Il n'y a pas de clients fiables dans la nature, pour exactement ce genre de raison. Abandonnez ce rêve maintenant. :)
la source
Tout comme tout le monde a recommandé; conservez autant de code que possible côté serveur.
Une méthode que j'ai utilisée pour traiter la copie de code est un peu étrange, mais elle a bien fonctionné jusqu'à présent.
Désormais, votre code secret est exécuté côté client et n'apparaîtra ni dans les vues / sources, ni dans les inspecteurs / consoles. Il y a encore des moyens pour obtenir le code, mais c'est un peu plus difficile.
la source
La seule façon d'être raisonnablement sûr que votre code de jeu sera sécurisé est de créer un jeu de type client / serveur et de mettre autant de code que possible sur le serveur. Et bien sûr, sécurisez ce serveur!
Le problème principal est que si du code est en cours d'exécution sur mon ordinateur, je peux l'inspecter, le décompiler et comprendre comment il fonctionne. Ceci est vrai pour JavaScript, Flash, C ++, tout le reste. En fait, dans le développement de MMO (où se trouve l'essentiel de mon expérience professionnelle), on suppose dès le départ que le client est compromis: tout ce que vous avez écrit pour le client est déjà entre les mains de celui qui le souhaite, malveillant ou non. ne pas.
Réduire le code fournit une protection minime contre les personnes trop paresseuses pour l'exploiter à l'aide de l'un des nombreux outils disponibles. (Mais le code de production doit être minimisé pour réduire son empreinte de données.)
Mais si vous vous trouvez dans une situation où, par exemple, votre patron souhaite une sorte de protection de code, vous pouvez utiliser Google "Javascript obfuscator" - il existe de nombreux logiciels gratuits et payants qui rendent JS au moins aussi impénétrable. décompiler en Flash est.
la source
En plus de tout ce qui a trait à l'obscurcissement du code, veillez à placer une déclaration de copyright très claire en haut de chaque fichier et à indiquer clairement que la licence ne permet aucune modification ni utilisation commerciale. Cela vous donne un recours légal si quelqu'un essaie de le copier. Si vous n'êtes pas disposé à aller au tribunal à ce sujet, alors toute cette question est essentiellement académique.
la source
Je pense que si vous rendiez votre jeu multijoueur, ce qui implique de garder votre logique de jeu sur le serveur, vous le rendriez au moins moins attrayant à voler. Vous ne pouvez pas vraiment faire confiance au client. Comme quelqu'un l'a déjà mentionné, il existe des outils pour les langages même compilés, tels que Java et Flash, qui peuvent procéder au reverse engineering du texte du code à partir du code octet.
la source
Vous devez utiliser un minificateur Javascript. Il existe de nombreuses options disponibles, n'hésitez pas à en trouver une que vous aimez. Pour vous épargner quelques recherches, vous pouvez essayer Yahoo Minifier . Je n'ai pas couru cela moi-même mais je suppose que cela fera ce dont vous avez besoin. L'objectif est de 1) réduire la taille du fichier et 2) masquer le code. Ceci est accompli en supprimant tous les espaces blancs, les commentaires et en remplaçant les noms de variables par des noms plus brefs et insensés.
De nos jours, la plupart des applications Web utilisent une quantité importante de Javascript et utilisent des outils tels que ceux-ci pour protéger leur propriété intellectuelle. Comme d'autres l'ont dit, vous devriez toujours demander: "Puis-je faire cela sur le serveur?" pour les opérations importantes ou sensibles, mais je pense que cela devrait offrir une certaine protection.
la source
Utilisez le compilateur de fermetures Google http://code.google.com/closure/compiler/ Ce n'est pas simplement un minimiseur js;)
Quels sont les avantages d'utiliser Closure Compiler?
Efficacité. Le compilateur Closure réduit la taille de vos fichiers JavaScript et les rend plus efficaces, ce qui accélère le chargement de votre application et réduit vos besoins en bande passante.
Vérification du code. Le compilateur Closure fournit des avertissements pour JavaScript illégal et des avertissements pour des opérations potentiellement dangereuses, vous aidant à produire du JavaScript moins bogué et plus facile à maintenir.1.
la source
Ou vous pouvez utiliser quelque chose comme Game Maker HTML5 pour créer votre jeu qui masquera le code pour vous. Cela signifie que cela rendra le code illisible pour les humains. Et ce sera presque impossible à éditer.
la source
Toute propriété doit être conservée côté serveur. Côté client, vous n'en fournissez que suffisamment pour que cela facilite leur utilisation du jeu.
la source
Mettre tout sur le serveur peut entraîner des problèmes de performances et ne pas utiliser tout le potentiel du Web tel que nous le connaissons aujourd'hui.
Vous pouvez écrire votre code en c ++ et le compiler en binaires.
Client natif (NaCl).
Voir https://stackoverflow.com/questions/9018537/how-to-run-c-programs-on-the-web-inside-a-browser
la source