14

erste Dinge zuerst, ich habe nwsnapshot gesehen. und es hilft nicht.Sichern des Quellcodes in einer Node-Webkit-Desktop-Anwendung

Ich baue ein Lagerverwaltungssystem als Desktop-App mit node-webkit. das Projekt, das gebaut wird, benutzt compoundjs (mvc Javascriptbibliothek). die eine bestimmte Ordnerstruktur (Sie kennen mvc) und mehrere Javascript-Dateien in ihnen haben.

Das Problem ist, nwsnapshot erlaubt der App, nur eine einzige Snapshot-Datei zu haben, aber die Logik der Anwendung ist über alle Ordner in verschiedenen Javascript-Dateien verteilt.

Wie also sichere ich meinen Quellcode, bevor ich ihn an den Kunden verschicke? Oder irgendein anderes Work-around oder klüger (ja, ich weiß über Verschleierung).

Antwort

20

Sie können nodewebkit Befehl aufgerufen nwsnapshot zu kompilieren den Javascript-Code in binäre verwenden, die

nwsnapshot --extra-code application.js application.bin 

in Ihrem package.json fügen Sie diese ohne Angabe von JS-Datei in die App geladen werden:

snapshot: 'application.bin' 
+3

Dies sollte wirklich die akzeptierte Antwort sein. nwsnapshot kompiliert js Quelle zu Bytecode und injiziert sie in den Knotenprozess. Die akzeptierte Antwort verwendet einen Code-Minifier und einen Obfuscater, die ziemlich leicht zu überwinden sind. –

+0

Ist es möglich, andere Ressourcen in Binärdateien wie Font-Dateien umzuwandeln? –

+0

Update: Verwenden Sie [nwjc] (https://github.com/nwjs/nw.js/wiki/Protect-JavaScript-source-code-with-v8-snapshot). erstellt im Vergleich zu nwsnapshot eine viel kleinere Binärdatei – sunnyvilles

0

Sie können erwägen, die JS-Dateien im Build-Prozess in einen zusammenzuführen und zu kompilieren.

+0

jede Referenz oder Beispiel oder Werkzeug>? – sunnyvilles

+1

http://requirejs.org/docs/optimization.html – pfried

+0

immer noch nicht, was ich erwartet habe, aber _requirejs_ ist für jetzt ausreichend. Danke @pfried. – sunnyvilles

2

Es hängt wirklich davon ab, was Sie mit "sicher" meinen.

Sie können Ihren JavaScript-Code relativ gut verschleiern (und möglicherweise die Leistung verbessern), indem Sie Google Closure Compiler verwenden.

Mir sind keine Standardlösungen zum Verschlüsseln/Entschlüsseln von Javascript bekannt, und ehrlich gesagt würde ich die Notwendigkeit dafür in Frage stellen.

Einige Leute denken, dass sie es unmöglich machen müssen, ihren Quellcode einzusehen, da sie es gewohnt sind, mit kompilierten Sprachen umzugehen, in denen Sie nur Binärdateien an Benutzer versenden. Tatsache ist, Reverse-Engineering, dass Binärcode nie so schwierig war, wie manche Leute glauben, dass es so ist. Wenn es einen finanziellen Anreiz gibt, gibt es praktisch keinen Unterschied zwischen dem Versand von Quellcode und dem traditionellen Versand von Binärdateien.

Einige Sprachen bieten echte Verschlüsselung von bereitgestellten Assets, wie z. B. SLPS von Microsoft. Es scheint mir, dass der Markt dafür so klein war, dass Microsoft es einem Partner gab (nur meine Meinung). Die Wahrheit ist, dass die meisten Kunden nicht an Ihrem Quellcode interessiert sind; Sie sind vielmehr an Ihrer Fähigkeit interessiert, diesen Code effizient zu bedienen und zu unterstützen, während sie mit ihrer Arbeit fortfahren.

Verwandte Themen