Ich möchte eine JavaScript-Anwendung erstellen, die nicht quelloffen ist, und daher möchte ich lernen, wie ich meinen JS-Code verschleiern kann? Ist das möglich?
Das Kompilieren von Abschlüssen ist keine Verschleierung von Code :P
Ich möchte eine JavaScript-Anwendung erstellen, die nicht quelloffen ist, und daher möchte ich lernen, wie ich meinen JS-Code verschleiern kann? Ist das möglich?
Eine nicht auf Open-Source-Javascript basierende Anwendung ist ziemlich dumm. Javascript ist eine clientseitige interpretierte Sprache. Obfuscation ist kein großer Schutz.
Die JS-Verschleierung dient in der Regel dazu, die Größe des Skripts zu verringern, und nicht dazu, es zu "schützen". Wenn Sie in einer Situation sind, in der Sie nicht wollen, dass Ihr Code öffentlich ist, ist Javascript nicht die richtige Sprache
Es gibt viele Tools, aber die meisten tragen das Wort "Kompressor" (oder "Minifier") nicht ohne Grund in ihrem Namen.
Sie können clientseitigen Code nicht sichern: Drücken Sie einfach F12 in Google Chrome, Javascript-Ausführung pausieren und Sie erhalten alle Zeichenfolgen, auch die verschlüsselten. Verschönern es und Variablen umbenennen und Sie erhalten fast den ursprünglichen Code.
Wenn Sie serverseitiges Javascript (z.B. NodeJS) schreiben und Angst davor haben, dass sich jemand in Ihren Server einhackt, und dem Hacker die Arbeit erschweren wollen, so dass Sie mehr Zeit haben, Ihren Zugang zurückzubekommen, dann verwenden Sie Javacript-Kompilierer :
Sie müssen Closure Compiler auf Advanced Compilation verwenden, da es das einzige Tool ist, das alle Ihre Variablen umbenennt, auch wenn diese in mehreren Dateien/Modulen verwendet werden. Aber es hat ein Problem: Es funktioniert nur, wenn Sie in den Kodierungsstil .
Es ist nicht dafür gemacht, aber es funktioniert gut dabei: es fügt nicht zusätzlichen Code wie einige Compiler (die in der Regel rückgängig gemacht werden können, die die Werkzeuge, die ich zitiert habe), sondern ändert es auf ungewöhnliche Weise, einige sogar schwer rückgängig zu machen, und entfernen Sie ungenutzten Code, die im Vergleich zu echten Obfuscation ist gut für die Leistung.
Das ist keine gute Idee. Das Mining/Kompilieren von Code auf der Serverseite kann zu Sicherheitsproblemen führen, wenn der Minifier einen Fehler aufweist: zyan.scripts.mit.edu/blog/backdooring-js
Ich würde vorschlagen, zunächst minify mit etwas wie YUI Compressor, und dann konvertieren alle String und Zahlen zu HEX-Werte mit etwas wie http://www.javascriptobfuscator.com/
Damit würde der Code nahezu unmöglich zu verstehen sein, und ich denke, dass ein Hacker in diesem Stadium mehr Zeit brauchen wird, um Ihren Code nachzustellen, als wenn er ihn von Grund auf neu schreiben würde. Umschreiben und Klonen ist das, was man eigentlich nicht verhindern kann. Schließlich sind wir freie Menschen!
Dean Edwards Packer ist ein hervorragender Obfuskator, obwohl er in erster Linie den Code verschleiert und nicht irgendwelche Zeichenkettenelemente, die Sie in Ihrem Code haben.
Siehe: Online Javascript Komprimierungstool und wählen Sie Packer (Dean Edwards) aus der Dropdown-Liste
Probieren Sie dieses Tool aus Javascript Obfuscator
Ich habe es auf meinem HTML5-Spiel nicht nur es reduziert es Größe von 950KB auf 150, sondern auch den Quellcode unlesbar Schließung Compiler und Minifier sind reversibel Ich persönlich weiß nicht, wie man diese Verschleierung umkehren.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
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.