web-dev-qa-db-fra.com

Protégez le code js du vol

J'ai développé une application Web avec jquery, balise html-css qui serait une application Web premium. Je dois donc veiller à ce que le code ne soit pas volé. Mais, comme il s’agit de clients, il n’ya pas de moyen sûr de les protéger.Mais je veux les rendre plus difficiles à voler.Pour ce que j’ai fait:

  1. J'ai désactivé le clic droit de la souris
  2. J'ai minifié et obscurci le code.
  3. J'ai utilisé du code js pour ajouter un fichier js externe et obfusqué le code afin que personne ne puisse comprendre le nom du fichier js externe
  4. J'ai créé un fichier index.html dans le dossier js afin que personne ne puisse accéder au dossier js

Pensez-vous que tout cela est suffisant pour rendre le vol plus difficile? Ou toute suggestion/conseil pour moi?

6
Kaidul Islam

Il est impossible d'empêcher que votre code Javascript soit "volé" car le code est transmis au navigateur. Pour répondre à vos points spécifiques:

1. J'ai désactivé le bouton droit de la souris

Cela n'aura absolument aucun effet . Personne ne tentera jamais de voler du code en utilisant un clic droit (diable, un clic droit ne donne de toute façon pas accès à quoi que ce soit dans un navigateur). Cela n'empêchera donc pas les "voleurs occasionnels", encore moins les personnes qui savent réellement ce qu'elles font.

2. J'ai minifié et obscurci le code.

C'est une étape décente car il est beaucoup plus difficile de comprendre exactement ce que le code fait. Cependant, il existe de nombreux "déminifiants" de code qui reformateront bien le code - bien qu'avec des noms de variables inintelligibles.

3. J'ai utilisé du code js pour ajouter un fichier js externe et j'ai obscurci le code afin que personne ne puisse comprendre le nom du fichier js externe.

Si vous chargez un fichier externe à tout moment, il est capturé par les outils de développement des navigateurs (consultez l'onglet Réseau dans Google Chrome). Cela n'apportera donc aucune protection supplémentaire.

4. J'ai créé un fichier index.html dans le dossier js afin que personne ne puisse accéder au dossier js

Encore une fois, cela ne vaut rien car tout le monde peut voir quel fichier JS est chargé. De plus, "index.html" est un moyen terrible d’empêcher la liste des dossiers, il doit être exécuté côté serveur (par exemple, fichier .htaccess).


La vraie réponse: vous ne pouvez pas empêcher le vol de Javascript. Réduisez et obscurcissez-vous pour éviter toute compréhension facile de votre code, mais c'est tout ce que vous pouvez faire en termes de JS.

Vous pourrez peut-être déplacer une partie de la logique côté serveur (et utiliser AJAX dans votre application), ce qui empêcherait bien entendu tout utilisateur d'utiliser le JS sans modification - ils auraient besoin de répliquer votre la logique côté serveur eux-mêmes.

Et enfin, n'oubliez pas que le code Javascript que vous écrivez est déjà votre propriété et protégé par le droit d'auteur par vous . Si quelqu'un le vole, il enfreint la loi et vous pouvez intenter un procès contre lui.

9
DisgruntledGoat

J'ai désactivé le clic droit de la souris

Ne fais pas ça.
Il existe des utilisations valides pour le clic droit que vous bloquez en plus de la protection de votre code. Tout ce que vous ferez, c'est d'ennuyer tout le monde en faisant absolument rien pour arrêter les personnes qui en savent assez pour essayer de voler votre code en premier lieu.

8
Su'

Utilisez PHP pour que JavaScript ne soit chargé que si l'utilisateur est authentifié (par abonnement premium?)

I have created a index.html file in the js folder so that none can get access the js folder

Et s'ils devinent le nom du fichier? Vous devriez utiliser un .htaccess pour cela faire un Options -Indexes pour désactiver l'affichage du répertoire; c'est infaillible.

Mais la plupart des applications Web que je connais/écrivent utilisent une sorte de processeur hypertexte comme PHP ou ASP. La source de la fonctionnalité réelle est entièrement fermée si elle s'exécute sur un serveur sécurisé. Qui se soucie si quelqu'un vole le CSS/JavaScript si, quand ils copient le "source", ils obtiennent une copie non fonctionnelle? Vous pouvez également obtenir un copyright ou un brevet s'il est unique et innovant.

2
ionFish

Trois options pour "protéger" votre .js:

Vous pouvez utiliser différentes techniques pour cela, mais vous devez comprendre que aucune ne représente une protection intégrale. (Ils ne sont que des moyens de dissuasion).

1) Vous pouvez utiliser une injection de script ajax. Ceci décourage le vol car la même stratégie de domaine qui empêche XSS rendra le script côté client difficile à exécuter ailleurs.

2) Vous pouvez masquer votre code en utilisant n’importe quel obfuscateur en ligne gratuit.

3) Vous pouvez utiliser https://domainlockjs.com , ce qui crée des difficultés pour détecter les erreurs dans la console.

0
Bangkokian

J'ai résolu mon problème en y injectant php.J'ai écrit un article à ce sujet - assurer la sécurité du code JavaScript contre le vol . Je l'ai résolu par jQuery ajax, json et php. Voici un extrait de code:

           /*
             code.js
           */
           var temp;
           function calculate(){
             var a = $('#a').val();
             var b = $('#b').val();
           /*
            var c = 10;
            temp = (a + b)/c;
            $("#target").html(temp);
          */
        //Do above calculation on the server side
        var dataString = 'a=' + a + '&b=' + b + '&c=' + c;
           $.ajax(function(){
                type : "POST",
                url  : "calculate.php",
                data : dataString,
                cache: false,
                dataType: 'json',
                success: function(data){
                temp = data.temp;
                $("#target").html(temp);
               }
              });
           }

Et script php:

if($_POST){
$a = $_POST['a'];
$b = $_POST['b'];
$c = $_POST['c'];
$temp = ($a + $b)/$c;
$data = array('temp' => $temp);
header('Content-type: application/json');
echo json_encode($data);
}
0
Kaidul Islam