Dienstag, Januar 21, 2020

Mit einem obfuscator genug, um sichere meine JavaScript-code?

Arbeite ich am Aufbau einer Entwicklungs-tool, das in JavaScript geschrieben.

Dies wird nicht eine open-source-Projekt und verkauft werden (hoffentlich) als ein kommerzielles Produkt.

Ich bin auf der Suche nach der beste Weg zum Schutz meiner Investitionen. Mit einem obfuscator (code mangler) genug, um einigermaßen sicher mit dem code?

Gibt es andere alternativen, die mir nicht bekannt sind?

(Ich bin mir nicht sicher, ob obfuscator ist das richtige Wort, es ist eine der apps, die Ihren code und macht es sehr unleserlich.)

InformationsquelleAutor Markus | 2008-08-27

9 Kommentare

  1. 141

    Ich werde Ihnen ein Geheimnis sagen. Sobald Sie es verstehen, Sie fühlen sich viel besser über die Tatsache, dass Javascript-Verschleierung ist nur wirklich nützlich für die Einsparung von Bandbreite beim versenden von scripts über den Draht.

    Ihre source-code ist es nicht Wert zu stehlen.

    Ich weiß, das kommt wie ein Schock für das ego, aber ich kann sagen, dass dies sicher ohne jemals gesehen zu haben, eine code-Zeile, die Sie geschrieben haben, weil außerhalb der ganz wenigen Bereiche von Entwicklung, in denen ernsthafte Magie passiert, das gilt für alle source-code.

    Sagen, morgen, jemand gedumpten ein Stapel DVDs vor der Haustür mit dem source-code für Windows Vista. Was würden Sie in der Lage sein zu tun? Sicher, Sie konnte es kompilieren und verschenken Kopien, aber das ist nur ein Schritt mehr Aufwand als das kopieren der retail-version. Sie konnte mühsam suchen und entfernen Sie im code überprüfen der Lizenz, aber das ist etwas, was einige helle Kind bereits getan hat, um die Binärdateien. Ersetzen Sie das logo und die Grafiken, die vorgeben, dass du es selbst geschrieben hast und vermarkten es als „Vicrosoft Mista“? Sie erhalten gefangen.

    Könnten Sie verbringen eine enorme Menge an Zeit mit dem Lesen der code, Versuch, es zu verstehen und wirklich „der Diebstahl von geistigem Eigentum“, die Microsoft investiert in die Entwicklung des Produkts. Aber Sie würde enttäuscht. Sie finden würde, der code wurde aus einer langen Reihe von Weltlichen Entscheidungen zu treffen, eins nach dem anderen. Einige waren schlauer, als Sie denken konnte. Einige würden lassen Sie Sie schütteln Sie Ihren Kopf Fragen, welche Art von Affen sind Sie die Einstellung dort. Die meisten würden nur machen Sie zucken die Schultern und sagen „ja, das ist, wie Sie das tun.“

    In den Prozess werden Sie lernen eine Menge über das schreiben von Betriebssystemen, aber das wird nicht zum Schaden von Microsoft.

    Ersetzen „Vista“ mit „Leopard“ und den oben genannten Paragraphen nicht ändern ein bisschen. Es ist nicht Microsoft, es ist software. Die Hälfte der Menschen, die auf dieser Website könnte wahrscheinlich entwickeln einen Stack-Overflow-Klon, mit oder ohne Blick auf den Quelltext dieser Seite. Sie sind nur noch nicht. Der source-code von Firefox und WebKit sind da draußen für jedermann zu Lesen. Jetzt gehen Sie schreiben Ihre eigenen browser von Grund auf neu. Sehen Sie in ein paar Jahren.

    Software-Entwicklung ist eine Investition von Zeit. Es ist völliger Hybris zu glauben, dass das, was Sie tun, ist so besonders, dass niemand zu Klonen, ohne Blick auf Ihre Quelle, oder sogar, Sie würde Ihre Arbeit viel einfacher, ohne eine umsetzbare (und leicht nachweisbare) Menge von Ausschneiden und einfügen.

    • Lpple Aeopard? 😛
    • Zwei verschiedene Denkweisen bei der Arbeit hier. Die OP-Naht mit einem „Wirtschaft/unternehmerische“ Denkweise. Diese Antwort ist von einem coder/geek (wahrscheinlich von einem Mitarbeiter).
    • Scheiße, dass wir nicht Favorit eine Antwort auf SO. Lassen Sie mich sehen Sie Ihre source-code und ein Klon mit diesem feature.
    • Ernsthaft, eine der besten Antworten die ich je gelesen habe! +1, wünschte, es könnte mehr sein.
    • +1 für die Meisten würde nur machen Sie zucken die Schultern und sagen „ja, das ist, wie Sie das tun.“
    • Nicht wirklich. Die Wahrheit ist obfuscator oder nicht, jeder Programmierer Wert sein Salz reproduzieren konnte, was auch immer es ist du hast in etwa genauso viel Zeit, wie er Sie nahm. Wenn Sie Stahlen, was Sie Tat, man könnte Sie verklagen. Also Fazit von der „Wirtschaft/unternehmerische“ Sicht haben Sie von dem moment an, die Sie veröffentlichen, um die Menge an Zeit, die Sie an der Umsetzung Ihrer design-bis ein Konkurrent holt. Zeitraum. Das ist ein Vorsprung, den Sie erhalten. Den rest ist Sie Innovationen schneller als Ihre Konkurrenz.
    • Super, tolle Antwort. Wünschte, ich könnte ++ mehr als einmal.
    • viel Glück gegen jemanden klagt, der wahrscheinlich auf der anderen Seite des Planeten.
    • True, True, …und wahr.

  2. 32

    Ich zutiefst nicht einverstanden mit den meisten Antworten oben.

    Es ist wahr, dass jede software, die gestohlen werden können, trotz der Verschleierung, aber zumindest macht es schwieriger zu extrahieren und die Wiederverwendbarkeit einzelner Teile der software und das ist der Punkt.

    Vielleicht ist es billiger und weniger riskant, die Verwendung einer Verschleierung als Sie den code öffnen und kämpfen bei Gericht an, wenn jemand Stahl die besten Teile von unserer software und gefährlich Parallelität.

    Unobfuscated code flüstert:

    • Kommen auf, analysieren mich, Wiederverwendung von mir. Vielleicht könnte man eine bessere software mit mir.

    Obfuscated code sagt:

    • Weg gehen, dude. Es ist billiger, verwenden Sie Ihre eigenen Ideen als zu versuchen, mich knacken.
    • Dies ist keine Antwort, aber ich Stimme zu, das noch ein. Die ausgewählte Antwort war lang aber nicht genau, was die Leute hierher kam, noch etwas nicht offensichtlich ist.
  3. 3

    Wirst du einen aussichtslosen Kampf, wenn Sie versuchen, Ihren code zu verschleiern, in der Hoffnung, jemand, der nicht stehlen. Können Sie stoppen den casual-browser aus immer an, aber jemand gewidmet würde fast sicher in der Lage sein, zu überwinden, ist jede Maßnahme, die Sie verwenden.

    In der Vergangenheit habe ich Menschen gesehen, die mehrere Dinge tun:

    1. Fügen Sie eine Menge an Leerraum am oberen Rand der Seite mit einer Nachricht zu den Leuten zu erzählen, dass der code nicht verfügbar ist, wenn in der Wirklichkeit, die Sie gerade brauchen, um nach unten zu Blättern, ein paar Seiten zu werden.
    2. Läuft es durch einen encoder von einer Art, das ist so nützlich, da es kann einfach ausgeführt werden durch den decoder.
    3. Eine andere Methode ist die Verringerung der Variablen-Namen, um ein Zeichen und Leerzeichen (dies ist auch eine Effizienz-Sache).

    Gibt es viele andere Methoden.

    In der end, Ihre Bemühungen werden wahrscheinlich nur aufhören, den casual-browser aus zu sehen, Ihre Sachen. Wenn jemand dedizierten kommt dann gibt es nicht viel Sie tun können. Sie müssen Leben mit diesem.

    Mein Rat wäre, um ein wirklich großartiges Produkt, das zieht die meisten Menschen und hat sich gegen jede Konkurrenz, indem er das beste Produkt/service/community und nicht die verschleierte code.

  4. 1

    Du bist immer konfrontiert mit der Tatsache, dass jeder Benutzer, der kommt auf Ihre Webseite den download einer funktionierenden version von Javascript-source. Sie wird den source-code. Verschleiern Sie es sehr schwierig machen können wiederverwendet werden, indem jemand mit der Absicht zu stehlen Ihre harte Arbeit. Doch in vielen Fällen kann jemand auch die Wiederverwendung der verborgenen Quelle! Oder im schlimmsten Fall können Sie zu entwirren, es mit der hand und schließlich zu begreifen.

    Beispiel für eine situation wie die deine kann Google Maps. Die Javascript-Quelle ist eindeutig verschleiert. Aber für wirklich private/sensible Logik schieben Sie die Daten an den server und der server-Prozess, der Informationen über XMLHttpRequests (AJAX). Mit diesem design haben Sie die wichtigen Bestandteile auf der server-Seite sehr viel enger kontrolliert.

    • Google maps Quelle schaut nicht alle verschleiert… das Schlimmste, Das scheint getan worden ist, entfernen Sie alle Leerzeichen. Es ist eine große Seite, so dass würde gespeichert haben wenig Bandbreite.
  5. 0

    Das ist vermutlich die beste, die Sie tun können. Just bewusst sein, dass jeder mit genug Hingabe, kann wohl de-Anonymisierung Ihrem Programm. Nur stellen Sie sicher, Sie sind komfortabel mit, bevor Sie sich auf Ihr Projekt. Ich denke das größte problem wäre, zu kontrollieren, wer auf Ihre Website. Wenn jemand geht zu einer Website mit dem code drauf, und liebt, was es tut, ist es egal, dass Sie nicht verstehen, was der code tut, oder kann es nicht Lesen, wenn Sie können einfach kopieren Sie den code und verwenden Sie ihn auf Ihrer eigenen Website.

  6. 0

    Einen obfuscator helfen Ihnen nicht, wenn jemand will, um herauszufinden, den code. Der code ist noch vorhanden auf dem client-Rechner und Sie können schnappen Sie sich eine Kopie und studieren Sie in Ihrer Freizeit.

    Es gibt einfach keine Möglichkeit sich zu verstecken-code in Javascript geschrieben, da der source-code übergeben, um den browser für die Ausführung.

    Wenn Sie wollen sich zu verstecken Ihre Codes, haben Sie die folgenden Optionen:

    1) die Nutzung einer Umgebung, wo die kompilierten code (nicht von Quelle) auf den client heruntergeladen wird, z.B. Flash oder Silverlight. Ich bin mir auch nicht sicher, das ist narrensicher, aber es ist sicherlich viel besser als Javascript.

    2) ein back-end auf die server-Seite, die Arbeit macht und einen thin client nur Anfragen an den server.

  7. 0

    Ich würde sagen, ja, es ist genug, wenn Sie auch sicherstellen, als Sie komprimieren den code als auch mit einem tool wie Dean Edwards Packer oder ähnliches. Wenn Sie darüber nachdenken, was möglich ist, mit tools wie .NET Reflector in Bezug auf reverse engineering code kompiliert /IL in .NET, merkt man, dass es nichts, was Sie tun können, um vollständig schützen Sie Ihre Investition.

    Auf der anderen Seite, denken Sie daran, dass die Leute, die die Freigabe der source-code scheint auch nicht ganz schön aber trotzdem – es ist Ihre Erfahrung, dass die Menschen wollen mehr als nur Ihr geistiges Eigentum.

  8. 0

    code obfuscator ist genug für etwas, das einen minimalen Schutz, aber ich denke, es wird definitiv nicht genug, um wirklich schützen Sie. wenn Sie geduldig sind, können Sie wirklich de-zerfleischen die ganze Sache.. und ich bin sicher, es gibt Programme, um es für Sie tun.

    Dass gesagt wird, Sie können nicht aufhören, jemand aus der Piraterie Ihre Sachen, denn Sie werden schließlich brechen wird jede Art von Schutz, den Sie erstellen sowieso. und es ist besonders einfach in der Programmiersprache, wo der code nicht kompiliert.

    Wenn Sie mit einer anderen Sprache, vielleicht auch java oder .NET, können Sie versuchen, Dinge zu tun, wie „nach Hause telefonieren“, um zu überprüfen, dass eine Lizenz-Nummer entspricht einem bestimmten url. Das funktioniert, wenn Sie Ihre app ist eine Art online-app, die die Verbindung die ganze Zeit online. Aber mit Zugriff auf den Quellcode, können die Menschen leicht umgehen, dass ein Teil.

    Kurz gesagt, javascript ist eine schlechte Wahl für das, was Sie tun.

    Ein Schritt von, was Sie tun, ist vielleicht mit einem webservice-backend, um Ihre Daten. Lassen Sie die webservice-Griff der Authentifizierung/Verifizierung-Prozess. Erfordert ein bisschen Arbeit, um sicherzustellen, dass Sie kugelsicher, aber es könnte Arbeit

  9. 0

    Ist dies für eine Webseite, die von Natur aus stellt die Anzeige des Codes ein Menü Klick entfernt, ist es wirklich irgendeinem Grund irgendetwas zu verbergen? Wenn jemand will, um zu stehlen Ihre code, werden Sie wahrscheinlich gehen durch den Aufwand der Herstellung auch die meisten entstellten code lesbar ist. Blick auf kommerzielle websites, die Sie nicht verschleiern Ihre Codes, und niemand geht hin und Stiehlt den code von der google apps. Wenn Sie wirklich besorgt über Diebstahl-code, ich würde behaupten, für Sie zu schreiben, in einigen anderen kompilierten Sprache. (das ist natürlich nicht zerstören die ganze webapp Sache…), Selbst dann, Sie sind nicht absolut sicher, es gibt viele de-Compiler gibt.

    Also wirklich, es gibt keine Möglichkeit, das zu tun, was Sie wollen, in das Gesicht eines jeden mit ausreichender motivation.

Kostenlose Online-Tests