11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je suis actuellement un amateur autodidacte en développement web. Etant en pleine phase d'expérimentations, j'ai créé un script permettant de crypter une chaine (login, mot de passe ...). Mon problème vient du fait que c'est du JavaScript, et donc, que n'importe qui peut voir le code source et créer un script de décryptage.
Donc, ma question est :

Existe-t-il un moyen pour empêcher un utilisateur d'accéder au fichier js et donc de voir le code source ?

Merci d'avance de votre réponse Smiley cligne
Modifié par Bguigui67 (30 Mar 2013 - 08:56)
Bonjour,

Je ne voudrais pas vous dire de bêtise mais je ne pense pas que ce soit possible.
Le javascript s’exécutant coté client, le navigateur à accès à tous les fichiers JS.
Bonjour,

On ne peut pas crypter du Javascript.

Pour protéger un fichier Javascript, il faut utiliser ce qu'on appelle "obfuscator", c'est une technique qui consiste à rendre incompréhensible et illisible le code Javascript sans pour autant nuire à son fonctionnement.

Voici celui que j'utilise : http://www.javascriptobfuscator.com/
Ouf, pas génial le résultat de l'obfuscator - en plus c'est inutile car suffit de ré-encoder le résultat dans en caractères normaux.

Si tu veux limiter le risque que quelqu'un pique ton code, alors utilise simplement un minificateur - comme Uglify.js ou Closure Compiler. C'est une bonne pratique de le faire avant de mettre un code en production afin de réduire la taille de ses fichiers - alors tu feras deux pierres d'un coup.

Cela dit, si tu finis par travailler pas mal avec javascript, tu vas toujours vouloir attacher un "source-map" à ton code source pour pouvoir dénicher les erreurs plus facilement. Alors, la version original sera toujours accessible.

En gros, si tu veux mon avis, je doute que ton code soit génial au point qu'il soit nécessaire de le cacher aux yeux du publique.
Modifié par SBoudrias (29 Mar 2013 - 18:51)
Tout d'abord, merci pour vos réponses. Je retiens l'idée du minificateur Smiley cligne

SBoudrias a écrit :
En gros, si tu veux mon avis, je doute que ton code soit génial au point qu'il soit nécessaire de le cacher aux yeux du publique.


Là n'est pas la question. C'est un code permettant de crypter, côté client, des données sensibles (comme des mots de passe) pour pouvoir ultérieurement les envoyer au serveur via AJAX, par exemple. Le fait de pouvoir voir le code source pourrait permettre de créer un script de décryptage, ce qui bien sûr ne serait pas souhaitable.

Merci encore pour vos réponses Smiley cligne
Hola, alors tu as besoin réellement de sécurité, pas simplement d'obstruer la lecture de ton code avec un minificateur - ce qui est vraiment un protection faible et même inutile.

Utilise un algorithme d'encryptage réputé utilisant une clé d'encryption (ou une passphrase). Cette clé ne sera connu que de ton utilisateur et à chaque accès il devra la rentrer pour décrypter ses propres code. Regarde tous les *bons* services qui offrent la gestion de mot de passe sur le web (il y en a des centaines) et base toi sur leurs mesures de sécurité.
le fait qu'un utilisateur puisse connaitre l'algorithme n'est pas nécessairement une faille, tu peux utiliser un algorithme de hachage du type SHA-1 pour envoyer login et mot de passe cryptés, et ne stocker que les versions cryptées sur le serveur. Même si un utilisateur découvre les versions cryptés des données, il ne pourra pas en déduire les login et mot de passe en clair car l'algorithme n'est pas réversible (à ce jour).
Si par contre tu souhaites stocker les données en clair sur le serveur il faudra utiliser d'autres techniques, comme la génération dynamique d'une clé RSA par le serveur, qui sera liée à la session. Regardes comment fonctionnent les services de payement en ligne.