La description
Je conçois une application Node.JS (plus comme un site Web complet). L'application enverra cinq fichiers JavaScript et aura des <script>
balises les reliant entre eux.
Question
Comment empêcher les utilisateurs et les attaquants de regarder et de modifier mon code ?
Un exemple serait:
Ctrl+ Shift+I
Dans Devtools , allez aux sources , sélectionnez un fichier à éditer (ie
index.html
) et écrivez les éditionsEn appuyant sur Ctrl+ S, l' édition en direct se produira
Je voudrais empêcher l' exemple ci-dessus de se produire ... Est-ce possible?
Voici ce que je pensais:
Je vais créer un autre fichier JavaScript côté client, prevent_keys.js
Il écoutera Ctrl+ Shift+ I.
S'il revient
true
(c'est-à-dire que les touches ont été enfoncées), ce serontlog
les touches.
Cependant, cela n'empêchera pas l'utilisateur d'utiliser directement Devtools.
la source
Réponses:
Vous ne pouvez littéralement pas empêcher les utilisateurs d'accéder au contenu que vous leur envoyez et de le modifier. Vous n'avez aucun contrôle sur le navigateur, ni sur le navigateur qu'ils utilisent, ni sur le fait qu'ils téléchargent en fait votre code source via un navigateur. Vous exécutez votre code sur l'appareil d'une autre personne. Vous ne devez et ne pouvez rien supposer de l'intégrité de cet appareil.
Si vous avez du code que vous ne voulez pas exposer, ne l'envoyez pas au navigateur. Au lieu de cela, laissez le navigateur envoyer une demande à un serveur sur lequel vous exécutez le code secret.
À titre d'exemple concret, ne vérifiez pas les mots de passe sur le client. Le client peut être modifié pour toujours dire au serveur «le mot de passe était correct». Au lieu de cela, l'authentification doit avoir lieu sur votre serveur de confiance.
la source
Tu ne peux pas. L'une des règles fondamentales de l'informatique: vous ne pouvez pas faire confiance au client . Quel que soit le schéma intelligent auquel vous pensez, je peux le contourner si je contrôle le client.
la source
Pourquoi ne voulez-vous pas que le code soit modifié?
Sécurité? Confiance? Secret de commerce?
Ensuite, n'envoyez pas le code, demandez au client d'envoyer une demande et renvoyez un résultat. Peut-être pas un résultat privé ou privilégié, juste un fait est suffisant pour de nombreuses interfaces utilisateur.
Parce que des versions légèrement modifiées de votre propre code nuisent à vos résultats?
Utilisez un obscurcisseur de code, un gestionnaire de noms et des segments de code triviaux.
Ces techniques élèvent la barre du niveau de compétence réel et des outils nécessaires pour créer une légère variante de votre site Web. Sachez simplement que ces techniques peuvent ralentir votre code, introduire des bogues et des messages d'erreur intéressants et dénués de sens, tout en pouvant être surmontées par quelqu'un avec les bons outils et / ou les bonnes compétences. Alors considérez vraiment si cela en vaut la peine. À la fin de la journée, n'importe qui pouvait simplement écrire le même code.
la source