Reicht die Verwendung eines Obfuscators aus, um meinen JavaScript-Code zu schützen?

StackOverflow https://stackoverflow.com/questions/29399

  •  09-06-2019
  •  | 
  •  

Frage

Ich arbeite an der Entwicklung eines Entwicklungstools, das in JavaScript geschrieben ist.

Dies wird kein Open-Source-Projekt sein und wird (hoffentlich) als kommerzielles Produkt verkauft.

Ich suche nach der besten Möglichkeit, meine Investition zu schützen.Reicht die Verwendung eines Obfuscators (Code-Manglers) aus, um den Code einigermaßen zu sichern?

Gibt es andere Alternativen, die mir nicht bekannt sind?

(Ich bin mir nicht sicher, ob Obfuscator das richtige Wort ist, es ist eine der Apps, die Ihren Code übernehmen und ihn sehr unlesbar machen.)

War es hilfreich?

Lösung

Ich werde dir ein Geheimnis verraten.Sobald Sie es verstanden haben, werden Sie sich viel besser darüber im Klaren sein, dass die Javascript-Verschleierung nur dann wirklich nützlich ist, wenn es darum geht, Bandbreite zu sparen, wenn Sie Skripte über das Kabel senden.

Ihr Quellcode ist es nicht wert, gestohlen zu werden.

Ich weiß, dass das ein Schock für das Ego ist, aber ich kann es mit Zuversicht sagen, ohne jemals eine Codezeile gesehen zu haben, die Sie geschrieben haben, denn außerhalb der wenigen Entwicklungsbereiche, in denen ernsthafte Magie geschieht, gilt dies für den gesamten Quellcode.

Angenommen, morgen hat jemand einen Stapel DVDs mit dem Quellcode für Windows Vista vor Ihrer Haustür abgelegt.Was könnte man damit machen?Natürlich könnte man es kompilieren und Kopien verschenken, aber das ist nur ein Schritt mehr Aufwand als das Kopieren der Verkaufsversion.Sie könnten den Lizenzprüfcode mühsam finden und entfernen, aber das hat irgendein kluger Kerl bereits mit den Binärdateien gemacht.Ersetzen Sie das Logo und die Grafiken, tun Sie so, als hätten Sie es selbst geschrieben, und vermarkten Sie es als „Vicrosoft Mista“?Du wirst erwischt.

Sie könnten enorm viel Zeit damit verbringen, den Code zu lesen, ihn zu verstehen und tatsächlich „das geistige Eigentum zu stehlen“, das Microsoft in die Entwicklung des Produkts investiert hat.Aber Sie wären enttäuscht.Sie würden feststellen, dass der Kodex eine lange Reihe alltäglicher Entscheidungen war, die nacheinander getroffen wurden.Einige wären schlauer, als Sie sich vorstellen können.Bei manchen schüttelt man den Kopf und fragt sich, was für Affen sie dort einstellen.Die meisten würden dich einfach dazu bringen, mit den Schultern zu zucken und zu sagen: „Ja, so machst du das.“

Dabei lernen Sie viel über das Schreiben von Betriebssystemen, aber das wird Microsoft nicht schaden.

Ersetzen Sie „Vista“ durch „Leopard“, und die obigen Absätze ändern sich kein bisschen.Es ist nicht Microsoft, das ist es Software.Die Hälfte der Leute auf dieser Site könnte wahrscheinlich einen Stack Overflow-Klon entwickeln, mit oder ohne einen Blick auf die Quelle dieser Site.Sie haben es einfach nicht getan.Der Quellcode von Firefox und WebKit ist für jedermann lesbar.Schreiben Sie jetzt Ihren eigenen Browser von Grund auf.Wir sehen uns in ein paar Jahren.

Softwareentwicklung ist eine Investition von Zeit.Es ist völlige Hybris, sich vorzustellen, dass das, was Sie tun, so besonders ist, dass niemand es klonen könnte, ohne auf Ihre Quelle zu schauen, oder dass es seine Arbeit ohne einen umsetzbaren (und leicht erkennbaren) Aufwand an Ausschneiden und Einfügen erheblich erleichtern würde.

Andere Tipps

Ich bin mit den meisten Antworten oben überhaupt nicht einverstanden.

Es stimmt zwar, dass jede Software trotz der Verschleierung gestohlen werden kann, aber es macht es zumindest schwieriger einzelne Teile extrahieren und wiederverwenden der Software und das ist der Punkt.

Vielleicht ist es billiger und weniger riskant, eine Verschleierung zu verwenden, als den Code offen zu lassen und vor Gericht zu kämpfen, nachdem jemand die besten Teile unserer Software gestohlen und gefährliche Parallelität geschaffen hat.

Klarer Code flüstert:

  • Komm schon, analysiere mich, verwende mich wieder.Vielleicht könnten Sie mit mir eine bessere Software entwickeln.

Verschleierter Code sagt:

  • Geh weg, Alter.Es ist billiger, eigene Ideen zu verwenden, als zu versuchen, mich zu knacken.

Sie werden auf verlorenem Posten stehen, wenn Sie versuchen, Ihren Code zu verschleiern, in der Hoffnung, dass ihn nicht jemand stiehlt.Sie können den Gelegenheitsbrowser möglicherweise davon abhalten, darauf zuzugreifen, aber jemand, der sich dafür engagiert, wird mit ziemlicher Sicherheit in der Lage sein, alle von Ihnen verwendeten Maßnahmen zu überwinden.

In der Vergangenheit habe ich gesehen, wie Menschen verschiedene Dinge taten:

  1. Fügen Sie oben auf der Seite viel Leerzeichen ein, um den Leuten mitzuteilen, dass der Code nicht verfügbar ist. In Wirklichkeit müssen Sie nur ein paar Seiten nach unten scrollen, um darauf zuzugreifen.
  2. Das Ausführen über einen Encoder ist sehr nützlich, da es einfach über den Decoder ausgeführt werden kann.
  3. Eine andere Methode besteht darin, Variablennamen auf ein Zeichen zu reduzieren und Leerzeichen zu entfernen (dies ist ebenfalls eine Effizienzsache).

Es gibt viele andere Methoden.

Am Ende werden Ihre Bemühungen wahrscheinlich nur verhindern, dass der Gelegenheitsbrowser Ihre Inhalte sieht.Wenn jemand kommt, der sich engagiert, können Sie nicht viel tun.Damit wirst du leben müssen.

Mein Rat wäre, ein wirklich großartiges Produkt zu entwickeln, das die meisten Leute anzieht und sich von der Konkurrenz abhebt, indem man das beste Produkt/den besten Service/die beste Community und nicht den am meisten verschleierten Code hat.

Sie sind immer mit der Tatsache konfrontiert, dass jeder Benutzer, der Ihre Webseite besucht, eine funktionierende Version Ihrer Javascript-Quelle herunterlädt.Sie Wille Habe den Quellcode.Durch die Verschleierung kann es sehr schwierig werden, sie von jemandem mit der Absicht wiederzuverwenden stehlen deine harte Arbeit.In vielen Fällen kann jedoch jemand die verschleierte Quelle sogar wiederverwenden!Oder im schlimmsten Fall können sie es mit der Hand entwirren und schließlich begreifen.

Ein Beispiel für eine Situation wie Ihre könnte sein Google Maps.Die Javascript-Quelle ist eindeutig verschleiert.Für wirklich private/sensible Logik übertragen sie die Daten jedoch an den Server und veranlassen den Server, diese Informationen mithilfe von XMLHttpRequests (AJAX) zu verarbeiten.Mit diesem Design haben Sie die wichtigen Teile auf der Serverseite viel strenger kontrolliert.

Das ist wahrscheinlich das Beste, was Sie tun können.Seien Sie sich jedoch darüber im Klaren, dass wahrscheinlich jeder mit genügend Engagement Ihr Programm entschlüsseln kann.Stellen Sie einfach sicher, dass Sie damit vertraut sind, bevor Sie mit Ihrem Projekt beginnen.Ich denke, das größte Problem dabei wäre, zu kontrollieren, wer es auf seiner Website verwendet.Wenn jemand eine Website mit Ihrem Code besucht und ihm gefällt, was er tut, spielt es keine Rolle, dass er die Funktion des Codes nicht versteht oder ihn nicht lesen kann, wenn er den Code einfach kopieren kann Verwenden Sie es auf Ihrer eigenen Website.

Ein Obfuscator wird Ihnen überhaupt nicht helfen, wenn jemand den Code herausfinden möchte.Der Code ist immer noch auf dem Client-Rechner vorhanden und sie können sich eine Kopie davon besorgen und ihn in Ruhe studieren.

Es gibt einfach keine Möglichkeit, in Javascript geschriebenen Code zu verbergen, da der Quellcode zur Ausführung an den Browser übergeben werden muss.

Wenn Sie Ihren Code ausblenden möchten, haben Sie folgende Möglichkeiten:

1) Verwenden Sie eine Umgebung, in der kompilierter Code (keine Quelle) auf den Client heruntergeladen wird, z. B.Flash oder Silverlight.Ich bin nicht einmal sicher, ob das narrensicher ist, aber es ist auf jeden Fall viel besser als Javascript.

2) Haben Sie ein Back-End auf der Serverseite, das die Arbeit erledigt, und einen Thin Client, der nur Anfragen an den Server stellt.

Ich würde sagen ja, es reicht, wenn Sie auch sicherstellen, dass Sie den Code mit einem Tool wie komprimieren Dean Edwards Packer o.ä.Wenn Sie darüber nachdenken, was mit Tools wie .NET Reflector im Hinblick auf das Reverse Engineering von kompiliertem Code/IL in .NET möglich ist, wird Ihnen klar, dass Sie nichts tun können, um Ihre Investition vollständig zu schützen.

Denken Sie andererseits daran, dass Leute, die ihren Quellcode veröffentlichen, offenbar ohnehin ganz gut zurechtkommen – es ist ihre Erfahrung, dass die Leute mehr wollen als ihr geistiges Eigentum.

Code Obfuscator reicht für etwas aus, das nur minimalen Schutz benötigt, aber ich denke, es wird definitiv nicht ausreichen, um Sie wirklich zu schützen.Wenn Sie Geduld haben, können Sie das Ganze wirklich entwirren.und ich bin sicher, dass es Programme gibt, die das für Sie erledigen.

Abgesehen davon können Sie niemanden davon abhalten, Ihre Daten zu raubkopieren, da diese ohnehin jeden von Ihnen geschaffenen Schutz zerstören.und es ist besonders einfach in Skriptsprachen, in denen der Code nicht kompiliert wird.

Wenn Sie eine andere Sprache verwenden, vielleicht Java oder .NET, können Sie versuchen, Dinge wie „Calling Home“ zu tun, um zu überprüfen, ob eine Lizenznummer mit einer bestimmten URL übereinstimmt.Das funktioniert, wenn es sich bei Ihrer App um eine Art Online-App handelt, die ständig mit dem Internet verbunden ist.Aber wenn man Zugriff auf die Quelle hat, kann man diesen Teil leicht umgehen.

Kurz gesagt, Javascript ist für das, was Sie tun, eine schlechte Wahl.
Ein weiterer Schritt gegenüber dem, was Sie tun, ist möglicherweise die Verwendung eines Webservice-Backends, um Ihre Daten abzurufen.Lassen Sie den Webservice den Authentifizierungs-/Verifizierungsprozess übernehmen.Es erfordert ein wenig Arbeit, um sicherzustellen, dass es kugelsicher ist, aber es könnte arbeiten

Wenn es sich dabei um eine Website handelt, bei der die Anzeige ihres Codes naturgemäß nur einen Menüklick entfernt ist, ist das der Fall Wirklich Gibt es einen Grund, etwas zu verbergen?Wenn jemand Ihren Code stehlen möchte, wird er sich höchstwahrscheinlich die Mühe machen, selbst den am meisten verstümmelten Code für Menschen lesbar zu machen.Schauen Sie sich kommerzielle Websites an, sie verschleiern ihren Code nicht und niemand geht raus und stiehlt Code aus den Google-Apps.Wenn Sie wirklich Angst vor Codediebstahl haben, würde ich dafür plädieren, ihn in einer anderen kompilierten Sprache zu schreiben.(Was natürlich die ganze Webapp-Sache zerstört ...) Selbst dann sind Sie nicht ganz sicher, es gibt viele De-Compiler da draußen.

Es gibt also wirklich keine Möglichkeit, das zu tun, was man will, wenn jemand ausreichend motiviert ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top