Verschleierung:
Versuchen Sie YUI-Kompressor . Es ist ein sehr beliebtes Tool, das vom Yahoo UI-Team entwickelt, verbessert und gepflegt wird.
~~
Sie können auch verwenden:
~~
* Google Closure Compiler* UglifyJS
UPDATE: This question was originally asked on 2008, and The mentioned technologies are deprecated. you can use:
Private String-Daten:
Die Geheimhaltung von Zeichenkettenwerten ist ein anderes Thema, und die Verschleierung ist nicht wirklich von großem Nutzen. Wenn Sie Ihren Quellcode in ein verstümmeltes, verkleinertes Chaos verpacken, haben Sie natürlich eine Light-Version von Sicherheit über Unklarheit . Meistens ist es Ihr Benutzer, der den Quelltext anschaut, und die Zeichenkettenwerte auf dem Client sind für seine Verwendung bestimmt, so dass diese Art von privaten Zeichenkettenwerten nicht oft notwendig ist.
Wenn Sie wirklich einen Wert haben, den ein Benutzer niemals sehen soll, haben Sie mehrere Möglichkeiten. Erstens könnten Sie eine Art Verschlüsselung vornehmen, die beim Laden der Seite entschlüsselt wird. Das wäre wahrscheinlich eine der sichersten Optionen, aber auch eine Menge Arbeit, die vielleicht unnötig ist. Sie könnten wahrscheinlich einige String-Werte mit base64 kodieren, was einfacher wäre, aber jemand, der diese String-Werte wirklich haben möchte, könnte sie leicht entschlüsseln . Verschlüsselung ist die einzige Möglichkeit, wirklich zu verhindern, dass jemand auf Ihre Daten zugreift, und die meisten Menschen finden, dass dies mehr Sicherheit bedeutet, als sie brauchen.
Sidenote:
Die Verschleierung in Javascript ist dafür bekannt, dass sie einige Fehler verursacht. Die Obfuskatoren werden ein wenig besser, aber viele Firmen sehen genug Nutzen in der Verkleinern y gzipping und die zusätzlichen Einsparungen durch Verschleierung ist nicht immer die Mühe wert . Wenn Sie versuchen, Ihren Quellcode zu schützen, werden Sie vielleicht feststellen, dass es sich lohnt, Ihren Code schwerer lesbar zu machen. JSMin ist eine gute Alternative.
22 Stimmen
Das Argument, man dürfe nichts verschleiern, scheint mir nicht stichhaltig zu sein. Es sei denn, Sie glauben wirklich, dass Ihre Benutzer Fehler beheben/berichten könnten, dann sollten Sie es tun. Es kann die Ladezeiten durch Minifying verringern. Es wird niemals einen wirklich engagierten Hacker aufhalten, aber es wird ihn/sie verlangsamen und es wird halbherzige Hackversuche verhindern. Es ist sehr einfach zu machen und es gibt viele Tools (siehe andere Antworten), ich würde sagen, mach es auf jeden Fall, da es meistens nur Vorteile bringt, aber erwarte nicht, dass es wirkliche Sicherheit bringt oder jemanden davon abhält, deinen Code zu kopieren, wenn er es wirklich will. Die einzige Möglichkeit, dies zu tun, ist, den Code serverseitig zu halten und Ajax zu verwenden.
0 Stimmen
Der beste Javascript Obfuskator So funktioniert es bei mir. Es wird sogar nicht von js beautifier dekodiert. ;)
1 Stimmen
Die meisten der hier erwähnten Obfuskatoren können einfach durch die Einstellung
window.eval = console.log.bind(console);
bevor Sie das Skript ausführen. Im besten Fall ist das Ergebnis nach der Ausführung des Skripts dasselbe wie bei der Ausführung eines Minifizierers für das Original, daher sehe ich keine wirklichen Vorteile der Verwendung eines speziellen Obfuskators gegenüber der Verwendung eines Minifizierers. Zumal obfuskierter Code in der Regel aufgeblähter (und langsamer zu laden) ist als minifizierter Code.2 Stimmen
Zusammengefasst: Bevor Sie sich für einen Obfuskator entscheiden, versuchen Sie, ein obfuskiertes Beispiel auszuführen, nachdem Sie
var oldEval = window.eval; window.eval= function(x){console.log(x); return oldEval(x)}
. Fügen Sie dann das Ergebnis in jsbeautifier ein und prüfen Sie, ob es immer noch verschleiert aussieht. Wenn nicht, wählen Sie einen anderen Obfuskator.3 Stimmen
Oder noch einfacher: Fügen Sie das Beispiel einfach in deobfuscatejavascript.com . Die Ergebnisse von "the best javascript obfuscator" (nach @abhishekbagul) nach der Ausführung der deobfuscator ist genau das gleiche wie die ursprüngliche Quelle, auch einschließlich der Kommentare!
1 Stimmen
Dieser Online-Verschleierer ist wirklich einfach zu verwenden, oder wenn Sie Node.js verwenden oder es installiert haben, können Sie dieses Projekt verwenden: javascript-obfuscator
npm install --save-dev javascript-obfuscator
das quelloffen und wirklich gut ist.0 Stimmen
Encode.js verwenden: encodejs.devincity.com
1 Stimmen
Ich habe eine Lösung für dieses Problem gefunden: github.com/blackmiaool/decent-messup
0 Stimmen
Für jeden Obfuskator kann ein Deobfuskator erstellt werden.
0 Stimmen
Versuchen Sie, Ihren Code in Worker-Threads zu verschieben und importScripts("yourscript.js"); zu verwenden. Dann sind sie im Debugger nicht so leicht zu sehen, da sie nur verfügbar sind, wenn sie geladen (aufgerufen) werden, und standardmäßig ausgeblendet sind.
3 Stimmen
Es ist bedauerlich, dass diese Frage geschlossen ist. Es handelt sich um ein weit verbreitetes Problem mit einer Vielzahl von Lösungen, die sich alle recht gut erklären und vergleichen/gegenüberstellen lassen, ohne die Frage zu klären.
1 Stimmen
@Benjamin: Das Argument ist nicht fehlerhaft, es ist nur perfekt abgestimmt und politisch korrekt im Einklang mit der aktuellen Agenda, die besagt: "Arbeite zum Spaß und um dich zu zeigen, und lass andere dein Geld einstreichen".
0 Stimmen
Die Frage ist zwar schon etwas älter, aber vielleicht für einige von euch noch interessant: obfuscator.io macht einige anständige Verschleierungen und man muss sich wirklich anstrengen, um den Code zu verstehen.
0 Stimmen
Eine nicht einfache, aber gute Methode: Verwenden Sie kein JavaScript.