8 Stimmen

Python-Anwendungen: Können Sie Ihren Code irgendwie sichern?

Wenn es wirklich einen "besten" Weg gibt, was ist wie man eine Python-Anwendung am besten ausliefert und sicherstellt, dass niemand (leicht) Ihre Algorithmen/Sicherheit/Arbeit im Allgemeinen zurückentwickeln kann?

Wenn es keinen "besten" Weg gibt, was sind dann die verschiedenen Möglichkeiten?

Hintergrund: Ich liebe es, in Python zu programmieren und würde gerne mehr Anwendungen damit veröffentlichen. Eine Sache, über die ich mich wundere, ist die Möglichkeit, dass Leute jeglichen Lizenzierungscode, den ich eingefügt habe, umgehen oder einfach meine gesamte Quellcodebasis abgreifen können. Ich habe von Py2Exe und ähnlichen Anwendungen gehört, aber ich bin neugierig, ob es "bevorzugte" Möglichkeiten gibt, dies zu tun, oder ob dieses Problem einfach eine Tatsache des Lebens ist.

13voto

Matthew Flaschen Punkte 266507

Sicherheit durch Unklarheit niemals funktioniert. Wenn Sie eine urheberrechtlich geschützte Lizenz verwenden müssen, sollten Sie diese mit Hilfe des Gesetzes durchsetzen und nicht mit halbgaren Verschleierungsversuchen.

Wenn Sie sich Sorgen machen, dass sie Ihren Sicherheitsalgorithmus (z. B. Kryptographie) lernen könnten, gilt das Gleiche. Echte, nützliche Sicherheitsalgorithmen (wie AES) sind sicher, auch wenn der Algorithmus vollständig bekannt ist.

8voto

Bill Karwin Punkte 493880

Selbst wenn Sie eine kompilierte Sprache wie C# oder Java verwenden, können Menschen Reverse Engineering durchführen, wenn sie motiviert und technisch kompetent sind. Verschleierung ist kein zuverlässiger Schutz dagegen.

Sie können das Verbot des Reverse-Engineering in Ihre Endbenutzer-Lizenzvereinbarung für Ihre Software aufnehmen. Die meisten proprietären Unternehmen tun dies. Aber das verhindert keinen Verstoß, sondern gibt Ihnen nur die Möglichkeit, rechtliche Schritte einzuleiten.

Le site am besten Die Lösung besteht darin, Produkte und Dienstleistungen anzubieten, bei denen der Zugang des Nutzers zum Lesen Ihres Codes nicht Ihre Fähigkeit beeinträchtigt, Ihr Produkt oder Ihre Dienstleistung zu verkaufen. Basieren Sie Ihr Geschäft auf den erbrachten Dienstleistungen oder dem Abonnement für regelmäßige Datenaktualisierungen und nicht auf dem Code selbst.

Beispiel: Slashdot stellt den Code für seine Website zur Verfügung. Beeinträchtigt dies ihre Fähigkeit, ihre Website zu betreiben? Nein.

Eine andere Möglichkeit besteht darin, den Preis so festzulegen, dass der Aufwand für die Piraterie Ihres Codes teurer ist als der Erwerb legaler Lizenzen zur Nutzung Ihres Produkts. Joel Spolsky hat in seinen Artikeln und Podcasts eine Empfehlung für diesen Effekt ausgesprochen.

5voto

Koen Bok Punkte 3154

Versand einer kommerzielle Mac-Desktop-Anwendung In Python tun wir genau das, was in den anderen Antworten beschrieben wurde: Schützen Sie sich vor dem Gesetz mit einer anständigen EULA, und nicht mit Verschleierungstaktiken.

Wir hatten noch nie Probleme mit Leuten, die unseren Code zurückentwickelt haben. Und falls doch, bin ich zuversichtlich, dass wir rechtliche Schritte einleiten können. Ja, das ist eine Tatsache des Lebens. Aber damit kann man gut leben. Besorgen Sie sich einfach einen guten Anwalt, der eine gute EULA schreibt.

3voto

alsuren Punkte 170

Das Wort, das Sie suchen, ist "verschleiern". Ein kurzes Googeln zeigt:

http://www.lysator.liu.se/~astrand/projects/pyobfuscate/

sondern:

a) Wenn Urheberrechtsverletzungen zu einem Problem werden, ist das Gesetz auf Ihrer Seite (solange Sie die entsprechenden Urheberrechtsvermerke in alle Dateien aufnehmen).

b) Es ist auch möglich, mit Open-Source-Anwendungen Gewinne zu erzielen, wenn man es geschickt anstellt.

c) Wenn Sie wollen, dass Ihr geistiges Eigentum wirklich sicher ist, dann besteht die einzige Lösung darin, es erst gar nicht in die Hände anderer zu geben: Schreiben Sie Ihre Anwendung als Webapplikation (ich empfehle die Verwendung von Django), und nur Ihr Webhosting-Anbieter hat Zugriff auf Ihren Code.

1voto

George Punkte 14711

py2exe

Unter Windows ist py2exe eine Möglichkeit, Code an Endbenutzer zu liefern. py2exe bündelt den Python-Interpreter, die notwendigen DLLs und Ihren zu Python-Bytecode kompilierten Code.

Hier sind die Python-Bytecode-Anweisungen, um einen Eindruck davon zu bekommen, wie es aussieht:

http://www.python.org/doc/2.5.2/lib/bytecodes.html

Oder Sie können verwenden dis um einige pyc/pyo-Dateien zu disassemblieren.

Die Verwendung von py2exe ist also ähnlich wie die Verteilung von kompilierten Python-Dateien (pyc/pyo).

Shedskin C++ Compiler

Der Shedskin-Compiler kompiliert eine Teilmenge von Python zu C++, die Sie mit einem beliebigen Compiler zu nativem Code kompilieren können.

pypy

Ich kenne mich mit PyPy nicht so gut aus. Nach ihren Dokumenten ist Pypy in der Lage, C-Code zu generieren.

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