Sollte ich mir Sorgen um "Javascript-Piraterie" machen?

11

Wie kann ich verhindern, dass Benutzer die Javascript-Dateien auf ihre eigene Site kopieren, wenn ich eine clientseitige Javascript-App schreibe (mit ein wenig Serverinteraktion)? Soll ich überhaupt?

sjmulder
quelle

Antworten:

34

Sollte es dich interessieren? Nein.

Warum? Weil du nichts dagegen tun kannst.

Einige haben vorhersehbar eine Verschleierung vorgeschlagen. Dies funktioniert für Java und .Net, aber Python, Javascript und Perl sind alle Klartext, so dass Sie nur sehr wenig tun können. Der Wert auf Ihrer Site ist zweifellos die Serverseite. Machen Sie sich also keine Sorgen um Javascript.


quelle
1
Wenn ich herausfinden kann, was ich aus zerlegtem (angeblich) verschleiertem Java wissen muss, kann ich Javascript verwalten und bin kaum ein Experte für solches "Hacken" oder Reverse Engineering. "Information sehnt sich danach, frei zu sein" (Zitat, das ich irgendwo gehört habe).
2
Javascript hat eine angeborene Verteidigung: Es ist an serverseitigen Code gebunden, auf den nicht zugegriffen werden kann. Die Verschleierung ist ein Placebo. Es macht es auch schwieriger, Fehlerberichte zu diagnostizieren, die Sie erhalten. Wenn jemand Sie
1
Und was war der coole Trick?
2
Die Abstimmungen bringen mich zum Lachen. Javascript wird am besten als Dienstprogramm zur Verbesserung Ihrer Website verwendet. Der einzige Code, der geschützt werden sollte, ist Code, der Informationen über das Innenleben Ihrer Website und Ihres Unternehmens enthält. Keines dieser Dinge gehört zunächst in das Client-Skript!
1
@ Jim: Weiß ich es nicht? Ich denke, die Anzahl beträgt derzeit 17 Upvotes, 8 Downvotes und aufgrund der täglichen Wiederholungsgrenze ist meine Wiederholung aus dieser Antwort ... -16.
14

Das Beste, was Sie tun können, ist, den Code zu verschleiern, damit andere ihn nur schwer ändern können. Natürlich behalten Sie eine Kopie des Originals.

Als Bonus sollte verschleierter Code kleiner und daher schneller zu laden sein.

IAdapter
quelle
Das nennt man Javascript-Minimierung, nicht wahr?
Jonathan Leffler
4
Minifizierung tatsächlich
Matt Briggs
9

Warum machst du dir Sorgen? Ich sehe zwei Gründe dafür: 1) Sie schreiben eine kommerzielle JavaScript-Bibliothek. Lösung: Holen Sie sich einen anderen Geschäftsplan, JavaScript-Bibliotheken sind in der Regel kostenlos. Vielleicht können Sie in einer kleinen Nische von Unternehmen Geld verdienen, aber sie werden höchstwahrscheinlich sowieso keinen illegal kopierten Code verwenden.

2) Sie befürchten, dass Ihr Konkurrent Ihre Website kopieren wird. Wenn dies der Fall ist, können Sie sicher sein, dass Sie ihnen immer einen Schritt voraus sind. Wahrscheinlicher ist, dass sie ihren eigenen Code schreiben und das Erscheinungsbild und Verhalten Ihrer Website kopieren. Nichts kann Sie davor retten, außer dumme Softwarepatente zu erhalten, z. B. Amazon One-Click-Shopping.

IOW, mach dir keine Sorgen. Fügen Sie einen Copyright-Hinweis ein, in dem Sie aufgefordert werden, Ihnen mitzuteilen, ob sie Ihre Inhalte verwenden. Wenn genug Leute es tun, nutzen Sie die Tatsache, dass Sie eine nützliche Bibliothek erstellt haben, um Guthaben unter Geeks zu erhalten, was auf lange Sicht wahrscheinlich von Vorteil sein wird.

erikkallen
quelle
Es ist eine Webanwendung, keine Bibliothek :). Danke für # 2.
6

Versuchen Sie nicht, eine clientseitige Skriptsprache zu "schützen". Die Verschleierung funktioniert nicht. Minimieren hat seine Verwendung (aber Anti-Piraterie ist keine davon)

Ich würde auch empfehlen , gegen minifying Code , wenn Sie Tausende von Treffern pro Tag bekommen, wo ein paar zusätzliche Kilobyte pro Anfrage wird einen spürbaren Unterschied (und nur tun, dass , sobald Sie alle Bilder komprimieren Sie richtig verwenden sind, die Sie speichern weit mehr als ein paar KB, Caching richtig einrichten und so weiter) ..

Selbst wenn Sie das Javascript minimieren / verschleiern, können die Benutzer es ganz einfach auf ihre eigene Site kopieren. Es wird etwas schwieriger zu ändern sein, aber je nachdem, was das Skript tut, spielt das möglicherweise keine Rolle. Zum Beispiel wird der von Menschen erwähnte WMD-Editor zur öffentlichen Verwendung minimiert geliefert.

Verschleierung und Minimierung können ähnlich sein, aber wenn Sie den Code richtig verschleiern würden, müssten Sie im Grunde große Teile davon neu schreiben, um das Verständnis zu erschweren. Dies macht den Code komplizierter und weitaus schwieriger zu handhaben (z Sie), also werden Fehler eingeführt. Wenn Ihr Javascript fehlerhaft wird, wird dies Piraterie verhindern, da niemand es verwenden (oder stehlen) möchte. Aber ähm, das ist nicht gut.

Eines der großartigen Dinge an Javascript ist, dass jeder mit der rechten Maustaste klicken / Quelle anzeigen und Javascript lernen kann, indem er sich Live- und Arbeitscode ansieht. Wenn Sie sich Sorgen machen, dass Leute den Code betrachten und kopieren, ist das Web / Javascript nicht vorhanden. t die richtige Sprache ..

Ich würde empfehlen, am Anfang aller Ihrer .jsDateien und <script>Blöcke einen Kommentar mit Ihren Informationen (Name, Website) und einer Lizenz zu setzen. Je nachdem, um welchen Code es sich handelt, wird möglicherweise ein Hinweis mit der Aufschrift "Wenn Sie diesen Code ganz oder teilweise in einem Projekt verwenden, lassen Sie es mich bitte wissen!" ist möglicherweise weitaus effektiver als "Verwenden Sie diesen Code niemals für einen anderen Zweck!"

dbr
quelle
4

Sie könnten den Code verschleiern (oder zumindest minimieren), um dies zu verhindern (obwohl dies für jemanden, der Zeit hat, nicht unaufhaltsam ist. Zum Beispiel die Deobfuscation des WMD-Editors durch StackOverflow (aber das hat einen guten Grund!)).

Wirklich jeder Code, den Sie Frontend setzen, wird öffentlich und für alle sichtbar / verwendbar sein.

Ross
quelle
Der WMD-Editor wurde nicht verschleiert, sondern nur minimiert.
Das Minimieren von JavaScript hat den netten Nebeneffekt, dass es auch verschleiert wird ... var va = fa (); ist so gut wie verschleiert.
Unkwntech
4

Warum sich überhaupt darum kümmern? Wenn Ihre Skripte es wert sind, gestohlen zu werden, können Sie sie stattdessen zu Open Source machen und Hilfe beim Honen erhalten.


quelle
Darüber hinaus erhalten Sie möglicherweise auch Kredit und gute PR für sie. Wenn Sie diese Dinge nicht im herkömmlichen geschäftlichen Sinne für sich arbeiten lassen können, schauen Sie sich an, wie Sie sie auf andere Weise für Sie arbeiten lassen können.
Jon Hopkins
4

Sie können nicht wirklich, da es sich um eine interpretierte Sprache handelt, die immer in Quellcodeform geliefert wird. Selbst die Verschleierung wird nicht viel helfen, wenn der Pirat genug motiviert ist.

(Fallbeispiel: Der StackOverflow WMD Editor , der - genau genommen - als Piraterie angesehen werden kann, obwohl ich weiß, dass Jeff und Dana nur gute Absichten hatten)

Michael Stum
quelle
4

Nein, du solltest dir überhaupt keine Sorgen machen.

Wenn Ihr Unternehmen von der Geheimhaltung Ihres JavaScript-Codes abhängig ist, liegt ein ernstes Problem vor.

Ansonsten kümmere dich einfach nicht darum. Möglicherweise sollten Sie versuchen, Ihren JavaScript-Code zu minimieren, damit die Seiten schneller geladen werden.

Niyaz
quelle
3

Ich verwende GWT (das Google Web Toolkit) zum Schreiben von Webanwendungen, bei denen der Code vollständig in Java geschrieben ist und mit Java-zentrierten Tools debuggt und getestet werden kann, aber zur Veröffentlichung in JavaScript konvertiert wird.

Wenn das von GWT generierte JavaScript nicht aktiviert PRETTYoder nicht DETAILEDaktiviert ist, ist es sehr stark optimiert und verschleiert, was ein Reverse Engineering äußerst unpraktisch macht. (Ein herkömmlicher JavaScript-Verschleierer bietet einen Teil dieser Vorteile - jedoch nicht, wenn die Optimierungen von der Fähigkeit von GWT abhängen, detaillierte Verzweigungsbereinigungen und Codepfadanalysen durchzuführen.)

Im Allgemeinen bin ich jedoch -1 in Bezug auf Verschleierung - dies bedeutet zum Beispiel, dass legitime Kunden weniger in der Lage sind, Ihnen bei der Ermittlung ihrer Probleme zu helfen, selbst wenn sie über Entwicklungsfähigkeiten und eine Kopie von FireBug verfügen. Sie sind der ursprüngliche Autor - Sie kennen den Code besser als jeder andere, und das verschafft Ihnen einen Wettbewerbsvorteil gegenüber jemandem, der versucht, einen billigen Abschlag durchzuführen. Wenn ein solcher Konkurrent tatsächlich echtes Geld mit etwas verdient, das er ohne Erlaubnis gestohlen hat, kann er dieses Geld (oder möglicherweise die dreifache Summe) in einem Rechtsstreit wegnehmen. Ein legitimer und ernsthafter Wettbewerb wird diesen Weg nicht gehen, und warum sollte man sich um die andere Art sorgen?

Charles Duffy
quelle
2

Wir verwenden viel Javascript-Code (und viel serverseitigen Code) für unsere Webanwendung und haben uns dafür entschieden, die Javascripts zu "verschleiern", um Leerzeichen, Zeilenumbrüche usw. zu entfernen. Dies schützt Ihren Code nicht wirklich. Aber machen Sie es sehr, sehr schwer zu lesen und zu verstehen, und höchstwahrscheinlich werden sich andere aufgrund des damit verbundenen Aufwands nicht darum kümmern.

Der Grund, warum wir dies tun, ist jedoch nicht so sehr, dass wir nicht möchten, dass jemand Teile unseres Codes kopiert, sondern dass wir unsere Partner / Kunden, denen wir den Code liefern, davon abhalten, Änderungen direkt in "unseren Dateien" vorzunehmen (an Vermeiden Sie Probleme bei der Installation des nächsten Updates.

Hinweis: Die Verschleierung hat jedoch einen Nachteil, den Sie beachten sollten: Wenn Sie diesen Skriptcode jemals debuggen müssen, können Sie selbst nicht mit der verschleierten Information arbeiten, sodass immer die lesbare Datei in die Datei kopiert werden muss Server zuerst.


quelle
2
Ich würde das Formatieren von Javascript in einem Editor oder die Verwendung eines "hübschen Druckers" nicht als großen Aufwand bezeichnen. Das Reduzieren dieser Dinge kann nützlich sein, um die Bandbreite zu reduzieren (dh zu minimieren), aber das ist alles.
Wenn die Javascript-Datei groß ist, ist dies ein großer Aufwand. Außerdem funktionieren "hübsche Drucker" in den Dateitypen "Eine einzige Zeile enthält den gesamten Code" nicht gut (oder überhaupt nicht).
1

Unter der Annahme, dass ausreichend gutes Javascript von anderen aufgegriffen wird, können Sie einfach mit der Strömung schwimmen und das Beste daraus machen.

Schlagen Sie eine Lizenz darauf, die die Verwendung erlaubt, während beispielsweise eine Zuordnung erforderlich ist. Vielleicht auch mit einer nichtkommerziellen Klausel wie einigen Creative Commons-Varianten, wenn Sie wirklich müssen.

JosefAssad
quelle
1

Der größte Teil Ihrer Anwendungslogik sollte serverseitig sein. Javascript sollte nur GUI-Inhalte und einfache Interaktionen mit dem Server verarbeiten. Wenn Ihr Javascript-Code genügend Anwendungslogik enthält, um sich Sorgen zu machen, dass jemand ihn stiehlt, machen Sie wahrscheinlich etwas falsch.

Davogone
quelle
0

Wenn Sie Geschäftsgeheimnisse haben, können Sie die sensibelsten Teile des Codes nach ActionScript (Flash) verschieben. Es ist im Wesentlichen dieselbe Sprache wie JavaScript und wird in tokenisierter Form gespeichert.


quelle
0

Wenn Sie sich Sorgen machen, dass entschlossene Hardcore-Hacker Ihren Code stehlen, können Sie leider nichts tun. Aber es gibt Möglichkeiten, es für zufällige Diebe unpraktisch zu machen. Eine relativ einfache Möglichkeit besteht darin, einige Teile mit XMLHttpRequestund zu laden eval(). Dies kann als etwas getarnt (oder darin enthalten) sein, das JSON-Daten abruft und diese zum Auffüllen der Seite verwendet.

user281377
quelle