2010-04-19 16 views
4

je dois encoder simplement une variable de chaîne (ma clé api) de sorte que est difficilement lisible par l'oeil humain, j'ai besoin de décoder facilement revenir à la même chaîne initiale. Quel est le moyen standard pratique et rapide (moins de calcul du côté de l'utilisateur) pour ce faire?Comment encoder simplement et décoder une variable chaîne

Merci beaucoup d'avance!

+0

Vous savez que cela ne sert à rien de protéger votre clé? – elias

Répondre

3

Si elle ne doit pas être super sécurisé, l'encodage base64 est toujours à portée de main:

http://www.webtoolkit.info/javascript-base64.html

+0

Je fini par utiliser http://plugins.jquery.com/project/b64 BTW – Mohammad

+0

Good- sait juste que cette méthode ne fait que incommode, mais loin d'être impossible, de décoder. –

+0

J'ai ajouté quelques bits supplémentaires inversé la chaîne, l'ai encodé etc. haha:) Je suppose que cela rend difficile de savoir quels bits ont été ajoutés en particulier car il a été inversé aussi ^^ Le décodeur renvoie des ordures. – Mohammad

0

Tout ce que vous pouvez faire pour obscurcir des informations sur le client implique que vous incluez le code de dé- obfuscation juste à côté.

Alors ... à part l'ajout d'une étape supplémentaire pour votre programme (et l'attaquant hypothétique), vous ne gagnez rien. Eh bien, pas grand chose de toute façon.

Si votre clé API est secrète, conservez-la sur le serveur et laissez le serveur effectuer le travail via des requêtes HTTP.

+0

Oui! c'est vrai, mais puisque je vais brouiller les fonctions javascript elles-mêmes, ce qui les écrase un peu et comme le code est petit, j'essaye juste de leur enlever l'avantage "Ctrl + F", les forçant pratiquement réapprendre tout le code pour le copier. Ce qui devrait décourager les amateurs. C'est un peu lié au projet, je ne suis pas sûr de la façon dont je l'ai décrit. – Mohammad

+0

@Mohammed: Je sais que c'est une mince ligne. Mais demandez-vous - si c'est secret (en termes de «mauvaises choses arrivent quand les gens découvrent», JS obfuscation ne suffit pas, et le courir sur le client est intrinsèquement dangereux, peu importe sous quelle forme ou forme. secret en ces termes, pourquoi s'embêter à le faire? Alors ... qui est votre public cible, qui vous chasser? – Tomalak

+0

Tomalak vous avez raison, bien sûr, je vais devoir commencer à s'inquiéter à ce sujet sur mon prochain optimisation de la sécurité Merci:) – Mohammad

0

Vous pouvez essayer un Javascript Obfuscator soit encoder votre script tout ou partie. Pas une solution absolue mais un début de protection de votre code.

+0

ceci n'encode aucune variable de chaîne. –

0

Est-ce des informations secrètes ou non?

S'il est un secret, vous avez besoin d'une véritable bibliothèque de cryptage et une réflexion profonde faire trop que votre secret est gardé secret. Je considérerais sérieusement n'envoyer aucun secret au navigateur.

Si ce n'est pas un secret et vous avez juste besoin d'envoyer ce sur l'URL sans que cela se foireuse alors échapper()/unescape() sont ce que vous recherchez.

+0

L'utilisation de 'escape()'/'unescape()' est obsolète: https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Predefined_Functions/escape_and_unescape_Functions – Tomalak