Dois-je m'inquiéter du «piratage Javascript»?


11

Si j'écris une application Javascript côté client (avec un peu d'interaction avec le serveur), comment empêcher les gens de copier les fichiers Javascript sur leur propre site? Dois-je du tout?

Réponses:


34

Devriez-vous vous en soucier? Non.

Pourquoi? Parce que vous ne pouvez vraiment rien y faire.

Certains ont suggéré une obfuscation prévisible. Cela fonctionne pour Java et .Net mais Python, Javascript et Perl sont tous en texte brut, il n'y a donc pas grand chose à faire. La valeur de votre site est sans aucun doute du côté serveur, alors ne vous inquiétez pas pour le Javascript.


1
Si je peux comprendre ce que je dois savoir de Java désassemblé (prétendument) obscurci, je pense que je peux gérer Javascript et je suis à peine un expert dans ce type de "piratage" ou de rétro-ingénierie. "L'information aspire à être gratuite" (citation que j'ai entendue quelque part).

2
Javascript a une défense innée: il est lié au code côté serveur, qui est inaccessible. L'obfuscation est un placebo. Cela rend également plus difficile le diagnostic des rapports d'erreur que vous obtenez. Si quelqu'un va vous arnaquer (et je pense que vous surestimez la valeur de votre code JS), vous ne pouvez pas faire grand-chose

1
Et quel était le truc cool en question?

2
Les votes négatifs me font rire. Javascript est mieux utilisé comme un utilitaire pour améliorer votre site. Le seul code à protéger est le code qui expose des informations sur le fonctionnement interne de votre site et de votre entreprise. Aucune de ces choses n'appartient au script client pour commencer!

1
@ Jim: je ne le sais pas. Je pense que le nombre est actuellement de 17 votes positifs, 8 votes négatifs et en raison de la limite quotidienne de représentants, mon représentant de cette réponse est ... -16.

14

Le mieux que vous puissiez faire est d'obscurcir le code afin que d'autres aient du mal à le modifier. Bien sûr, vous conservez une copie de l'original.

En prime, le code obscurci devrait être plus petit et donc plus rapide à charger.


Cela s'appelle la minimisation Javascript, n'est-ce pas?
Jonathan Leffler

4
minification en fait
Matt Briggs

9

Pourquoi t'inquiètes-tu? Je vois deux raisons pour lesquelles cela pourrait être: 1) Vous écrivez une bibliothèque JavaScript commerciale. Solution: Obtenez un autre plan d'affaires, les bibliothèques JavaScript sont généralement gratuites. Peut-être que vous pouvez gagner de l'argent dans un petit créneau d'entreprises, mais elles ne vont probablement pas utiliser de code copié illégalement de toute façon.

2) Vous craignez que votre concurrent ne copie votre site. S'ils le font, vous pouvez être assuré que vous aurez toujours une longueur d'avance sur eux. Plus probablement, ils vont écrire leur propre code et copier l'apparence et le comportement de votre site et rien ne peut vous en sauver, sauf pour obtenir des brevets logiciels stupides, par exemple, Amazon shopping en un clic.

IOW, ne t'inquiète pas. Mettez un avis de droit d'auteur demandant aux gens de vous dire s'ils utilisent vos trucs. Si suffisamment de personnes le font, utilisez le fait que vous avez créé une bibliothèque utile pour obtenir du crédit parmi les geeks, ce qui sera probablement bénéfique à long terme.


C'est une application web, pas une bibliothèque :). Merci pour # 2.

6

Non. N'essayez pas de "protéger" un langage de script côté client. L'obfuscation ne fonctionne pas. La minification a ses utilités (mais l'anti-piratage n'en fait pas partie)

Je recommande également contre minifying votre code , sauf si vous obtenez des milliers de visites par jour, où quelques kilo - octets supplémentaires par demande sera une différence notable (et seulement faire une fois que vous compressez toutes les images que vous utilisez correctement, ce qui vous permettra d' économiser bien plus que quelques Ko, configurez la mise en cache correctement, etc.).

Même si vous minimisez / obscurcissez le Javascript, les gens peuvent toujours le copier de manière assez triviale sur leur propre site. Ce sera un peu plus difficile à modifier, mais selon ce que fait le script, cela peut ne pas avoir d'importance. Par exemple, l'éditeur WMD que les gens ont mentionné est fourni, pour un usage public, minifié.

L'obfuscation et la minification peuvent être similaires, mais si vous deviez obscurcir correctement le code, vous devriez en réécrire de gros segments pour le rendre difficile à comprendre. Cela rend le code plus compliqué et beaucoup plus difficile à gérer (pour vous), ainsi introduira des bugs .. Si votre Javascript devient bogué, cela empêchera le piratage, car personne ne voudra l'utiliser (ou le voler) .. mais, euh, ce n'est pas bon.

L'une des grandes choses à propos de Javascript est que n'importe qui peut cliquer avec le bouton droit / afficher la source et apprendre Javascript en regardant du code en direct et fonctionnel. Si vous êtes inquiet à propos des gens qui regardent le code et le copient, le Web / Javascript n'est pas '' t la bonne langue ..

Je recommanderais de mettre un commentaire au début de tous vos .jsfichiers et <script>blocs, avec vos informations (nom, site Web) et une licence quelconque. En fonction de ce qu'est le code, mettre peut-être un avis disant "Si vous utilisez tout ou partie de ce code dans un projet, faites-le moi savoir!" peut être bien plus efficace que "N'utilisez jamais ce code à d'autres fins!"


4

Vous pouvez obscurcir (ou au moins réduire) le code pour décourager cela (bien qu'il ne soit pas imparable pour quelqu'un qui a le temps. Par exemple, la désobfuscation de l'éditeur WMD par StackOverflow (mais c'était pour une bonne raison!)).

Vraiment, tout code que vous mettez en frontend sera public et disponible pour tous.


L'éditeur d'ADM n'a pas été obscurci, il a juste été minifié.

La réduction de JavaScript a également l'avantage de l'obscurcir ... var va = fa (); est aussi bien obscurci.
Unkwntech

4

Pourquoi vous en soucier? Si vos scripts valent la peine d'être volés, vous pouvez plutôt les rendre open source et obtenir de l'aide pour les perfectionner.


Au-delà de cela, vous pouvez également obtenir du crédit et de bons RP pour eux. Si vous ne pouvez pas faire fonctionner ces choses pour vous dans un sens commercial conventionnel, regardez comment vous pouvez les faire fonctionner pour vous d'une autre manière.
Jon Hopkins

4

Vous ne pouvez pas vraiment car c'est un langage interprété qui est toujours livré sous forme de code source. Même l'obscurcissement n'aidera pas beaucoup si le pirate est suffisamment motivé.

(Exemple de cas: l' éditeur WMD StackOverflow , qui pourrait être - à proprement parler - être considéré comme du piratage, bien que je sache que Jeff et Dana n'avaient que de bonnes intentions)


4

Non, vous ne devriez pas vous inquiéter du tout.

Si votre entreprise dépend du secret de votre code JavaScript, il y a un sérieux problème avec celui-ci.

Sinon, ne vous embêtez pas. Vous devriez peut-être essayer de minimiser votre code JavaScript pour accélérer le chargement des pages.


3

J'utilise GWT (Google Web Toolkit) pour écrire des applications Web, dans lesquelles le code est entièrement écrit en Java et peut être débogué et testé avec des outils centrés sur Java, mais est converti en JavaScript pour publication.

Lorsqu'il n'est pas en mode PRETTYou DETAILED, le JavaScript généré par GWT est très hautement optimisé et obscurci, ce qui le rend extrêmement peu pratique pour la rétro-ingénierie. (Un obfuscateur JavaScript traditionnel fournira une partie de ces avantages - mais pas lorsque les optimisations dépendent de la capacité de GWT à effectuer une élagage de branche détaillé et une analyse du chemin de code).

Cela dit, en général, je suis -1 sur l'obscurcissement - cela signifie, par exemple, que les clients légitimes sont moins en mesure de vous aider à comprendre leurs problèmes, même lorsqu'ils ont des compétences en développement et une copie de FireBug. Vous êtes l'auteur original - vous connaissez le code mieux que quiconque, et cela vous donne un avantage concurrentiel par rapport à quelqu'un qui essaie d'exécuter une imitation bon marché; en outre, si un tel concurrent gagne réellement de l'argent réel sur quelque chose qu'il a volé sans autorisation, cela peut lui faire retirer cet argent (ou, potentiellement, tripler la somme) dans une action en justice; une concurrence légitime et sérieuse ne suivra pas cette voie, et pourquoi s'inquiéter de l'autre?


2

Nous utilisons beaucoup de code Javascript (et beaucoup de côté serveur) pour notre application Web, et nous avons choisi de "masquer" les Javascripts en supprimant les espaces blancs, les sauts de ligne, etc. - cela ne protégera pas vraiment votre code, mais il est très difficile à lire et à comprendre, et il est probable que les autres ne s'en soucieront pas en raison de l'effort impliqué.

Cependant, la raison pour laquelle nous le faisons n'est pas tant que nous ne voulons pas que quiconque copie des parties de notre code, mais plutôt pour décourager nos partenaires / clients à qui nous livrons le code de faire des modifications directement dans "nos fichiers" (à éviter les problèmes lors de l'installation de la prochaine mise à jour) ...

Remarque: l'obfuscation présente un inconvénient dont vous devez être conscient, cependant: si vous avez besoin de déboguer ce code de script, vous ne pourrez pas vous-même travailler avec l'infromation obscurcie, donc cela impliquera toujours de copier le fichier `` lisible '' sur le serveur d'abord.


2
Je n'appellerais pas le formatage Javascript dans un éditeur ou l'utilisation d'une certaine forme de "jolie imprimante" pour faire beaucoup d'efforts. Réduire ces choses peut être utile pour réduire la bande passante (c'est-à-dire réduire), mais c'est tout.

Si le fichier Javascript est volumineux, cela demande beaucoup d'efforts. De plus, les "jolies imprimantes" ne fonctionnent pas bien (ou ne fonctionnent pas du tout) sur les fichiers de type "une seule ligne contient tout le code".

1

En partant du principe que tout javascript suffisamment bon sera récupéré par d'autres, pourquoi ne pas simplement nager avec le courant et en tirer le meilleur parti?

Giflez une licence dessus qui permet une utilisation tout en nécessitant par exemple une attribution. Peut-être avec une clause non commerciale comme certaines variantes de Creative Commons, si vous le devez vraiment.


1

La plupart de votre logique d'application doit être côté serveur. Javascript ne doit gérer que les éléments de l'interface graphique et les interactions simples avec le serveur. Si votre code Javascript contient suffisamment de logique d'application que vous craignez que quelqu'un le vole, vous faites probablement quelque chose de mal.


0

Si vous avez des secrets commerciaux, vous pouvez déplacer les parties les plus sensibles du code vers ActionScript (Flash). C'est essentiellement le même langage que JavaScript et il est stocké sous forme de jetons.


0

Si vous craignez que des pirates inconditionnels déterminés volent votre code, désolé, vous ne pouvez rien faire. Mais il existe des moyens de le rendre peu pratique pour les voleurs occasionnels. Un moyen relativement simple de le faire est de charger certaines pièces à l'aide de XMLHttpRequestet eval()elles; cela pourrait être déguisé en (ou inclus dans) quelque chose qui obtient des données JSON et les utilise pour remplir la page.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.