747 Stimmen

Wie kann ich JavaScript verschleiern (schützen)?

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?

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.

430voto

keparo Punkte 32084

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.

37 Stimmen

Ich möchte noch hinzufügen, dass eine base64-Kodierung der Sicherheit nicht zuträglich ist, da es sich um ein triviales, umkehrbares Verfahren handelt. Selbst eine Verschlüsselung hilft nicht, wenn sie auf der Client-Seite entschlüsselt wird. Die einzige Möglichkeit, die Sicherheit einer Zeichenkette zu gewährleisten, besteht darin, dass der Client NUR die verschlüsselte Zeichenkette sieht, und diese wird an

18 Stimmen

Den Server zur weiteren Verarbeitung.

10 Stimmen

FYI, online YUI Kompressor kann hier gefunden werden: refresh-sf.com/yui

142voto

Jason Hall Punkte 20201

Ich bin überrascht, dass noch niemand Googles Verschluss-Compiler . Es wird nicht nur verkleinert/komprimiert, sondern auch analysiert, um ungenutzten Code zu finden und zu entfernen, und für maximale Verkleinerung umgeschrieben. Es kann auch eine Typüberprüfung durchführen und warnt vor Syntaxfehlern.

JQuery hat vor kurzem von YUI Compresser auf Closure Compiler umgestellt und sah eine " deutliche Verbesserung "

65 Stimmen

Ja, aber vor kurzem haben sie Closure Compiler verlassen und verwenden jetzt UglifyJS. Der JQuery-Code war fehlerhaft nach der Komprimierung mit Closure Compiler

0 Stimmen

Ich möchte darauf hinweisen, dass, wenn Sie mit Angular arbeiten. dieses Tool wird nicht wirklich wegen der Abhängigkeit Injektion und die Umbenennung von Argumenten, es sei denn, es gibt ein Kontrollkästchen, das ich nicht sehen kann.

1 Stimmen

Nützliches Tool, aber es kann keine Verschleierung vornehmen, was wahrscheinlich der Grund ist, warum es noch niemand erwähnt hat.

128voto

Schwern Punkte 138322

Eine Verschleierung kann nie wirklich funktionieren. Für jeden, der wirklich an Ihren Code herankommen will, ist es nur ein Hindernis. Schlimmer noch, sie hält Ihre Benutzer davon ab, Fehler zu beheben (und die Korrekturen an Sie zurückzuschicken), und erschwert es Ihnen, Probleme vor Ort zu diagnostizieren. Es ist eine Verschwendung von Zeit und Geld.

Sprechen Sie mit einem Anwalt über das Recht des geistigen Eigentums und Ihre rechtlichen Möglichkeiten. "Offene Quelle" bedeutet nicht, dass die Leute den Quelltext lesen können". Open Source ist vielmehr ein bestimmtes Lizenzmodell, das die freie Nutzung und Veränderung Ihres Codes erlaubt. Wenn Sie eine solche Lizenz nicht gewähren, verstößt derjenige, der Ihren Code kopiert, gegen das Gesetz und Sie haben (in den meisten Ländern der Welt) rechtliche Möglichkeiten, dies zu verhindern.

Der einzige Weg, wie Sie Ihren Code wirklich schützen können, ist, ihn nicht zu versenden. Verschieben Sie den wichtigen Code auf die Serverseite und lassen Sie Ihren öffentlichen Javascript-Code Ajax-Aufrufe dazu ausführen.

Lesen Sie meine vollständige Antwort über Verschleierungsmittel hier.

24 Stimmen

Anwälte verursachen wahrscheinlich mehr Kosten/Probleme als der verlorene Code, denken Sie sehr sorgfältig nach und stellen Sie viel Geld bereit, um Anwälte zu engagieren!!

14 Stimmen

-1: Ich glaube, es wäre schwierig, einen Anwalt zu finden, der JavaScript versteht... Ganz zu schweigen von den Gebühren und dem Zeitaufwand, der nötig ist, um "Verletzer" zu finden. Kann jemand wirklich gegen eine Lizenz verstoßen, die in den HTML/JavaScript-Dateien vergraben ist, wenn er nie etwas unterschrieben hat? +1 für die AJAX-Aufrufe.

16 Stimmen

@Alerty 1) Bei Lizenzen geht es im Wesentlichen um Gewährung Verwendung von urheberrechtlich geschütztem Material. Sie haben kaum das Recht, es ohne die Lizenz zu verwenden. Sie müssen sie nicht unterschreiben, um die Rechte zu erhalten. Eine Lizenz ist etwas anderes als ein Vertrag. 2a) Da es in der Frage um Leute geht, die HTML/Javascript ohne Erlaubnis kopieren und verwenden, ist die Lizenz nicht "vergraben", sondern befindet sich direkt auf der Sache, die genommen wird. 2b) Sie haben kaum das Recht, das urheberrechtlich geschützte Material eines anderen ohne eine Lizenz zu verwenden. 3) Der Anwalt muss sich nicht mit Javascript auskennen, sondern nur mit dem Recht des geistigen Eigentums.

49voto

Claudiu Punkte 215027

Sie können den Javascript-Quellcode verschleiern, wie Sie wollen, aber es wird immer Reverse-Engineerable sein, nur weil der gesamte Quellcode auf dem Client-Rechner ausgeführt werden muss ... die beste Option, die ich mir vorstellen kann, ist, die gesamte Verarbeitung mit serverseitigem Code durchzuführen, und alles, was der Client-Code-Javascript tut, ist, Anfragen zur Verarbeitung an den Server selbst zu senden. Andernfalls wird jeder immer in der Lage sein, alle Operationen zu verfolgen, die der Code ausführt.

Jemand erwähnte base64, um Strings sicher zu halten. Das ist eine schreckliche Idee. Base64 ist für die Leute, die Ihren Code zurückentwickeln wollen, sofort erkennbar. Das erste, was sie tun werden, ist ihn zu entschlüsseln und zu sehen, was er ist.

1 Stimmen

@Claudiu Bitte erklären Sie, was Sie mit serverseitigem Javascript meinen. Ich habe es nicht verstanden.

66 Stimmen

Wo immer ich hinkomme, lautet die häufigste Antwort auf die Frage "Wie kann ich mein Javascript verschleiern?": "Machen Sie sich keine Sorgen, denn jemand könnte es entschleiern." Das ist nicht wirklich eine Antwort.

2 Stimmen

@Vivek: Etwas spät, aber was ich wirklich meinte, ist "serverseitiger Code". Es ist möglich, Javascript nicht in einem Browser, sondern auf einem Server auszuführen, aber ich weiß nicht, wie verbreitet das ist.

45voto

Tom Punkte 14658

Es gibt eine Reihe von JavaScript-Verschleierungs-Tools, die frei verfügbar sind; ich denke jedoch, es ist wichtig zu beachten, dass es schwierig ist, JavaScript so weit zu verschleiern, dass es nicht zurückentwickelt werden kann.

Zu diesem Zweck gibt es mehrere Optionen, die ich im Laufe der Zeit bis zu einem gewissen Grad genutzt habe:

  • YUI-Kompressor . Der JavaScript-Kompressor von Yahoo! leistet gute Arbeit bei der Verdichtung des Codes, wodurch die Ladezeit verbessert wird. Es gibt eine kleine Stufe der Verschleierung, die relativ gut funktioniert. Im Wesentlichen ändert Compressor die Funktionsnamen, entfernt Leerzeichen und ändert lokale Variablen. Das ist das, was ich am häufigsten verwende. Es handelt sich um ein Open-Source-Tool auf Java-Basis.

  • JSMin ist ein von Douglas Crockford geschriebenes Werkzeug, das Ihren JavaScript-Quellcode minimieren soll. In Crockfords eigenen Worten: "JSMin verschleiert nicht, aber es verschlimmbessert." Sein Hauptziel ist es, die Größe Ihres Quelltextes zu verringern, damit er schneller in den Browsern geladen werden kann.

  • Kostenloser JavaScript-Obfuskator . Dies ist ein webbasiertes Tool, das versucht, Ihren Code zu verschleiern, indem es ihn tatsächlich verschlüsselt. Ich denke, dass die Vorteile dieser Form der Verschlüsselung (oder Verschleierung) auf Kosten der Dateigröße gehen könnten; das ist jedoch eine Frage der persönlichen Präferenz.

20 Stimmen

Da der Javascript-Code auf dem Rechner des Kunden ausgeführt werden muss, ist es nicht nur schwierig, den Code so zu verschleiern, dass er nicht rückgängig gemacht werden kann, sondern unmöglich .

23 Stimmen

Es geht um statistiken. ab welchem schwellenwert erhält jemand zugang zu ihrem code, ob mit oder ohne obfuscation? sie können immer noch zugang erhalten, aber je höher der schwellenwert, desto weniger leute. je weniger leute von etwas wissen, desto sicherer ist dieses etwas. standardpraxis der sicherheitsklassifizierung.

0 Stimmen

Haben Sie versucht zeroify.de Obfuskator? Er verwendet Minification und Komprimierung, benennt aber auch Klassen und IDs um, damit die Absicht von Klassen und Objekten schwerer zu verstehen ist

CodeJaeger.com

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.

Powered by:

X