web-dev-qa-db-de.com

Beste Lösung zum Schutz PHP Code ohne Verschlüsselung

Zunächst einmal suche ich kein Wunder ... Ich weiß, wie PHP funktioniert und dass es nicht wirklich möglich ist, meinen Code ohne Verschlüsselung vor den Clients zu verbergen. Dies ist jedoch mit den Kosten einer Erweiterung verbunden, die auf dem laufenden Server installiert werden muss.

Ich suche jedoch nach etwas anderem ... Ich suche nicht, um meinen Code zu verschlüsseln oder gar zu verschleiern. Es gibt viele PHP -Skripts ohne verschlüsselten/verschleierten Code, aber es handelt sich um kommerzielle Anwendungen. Zum Beispiel vBulletin- und/oder IP.Board-Forumanwendungen.

Ich möchte nur wissen, welchen Ansatz diese Jungs für ihre Anwendungen verwenden ...

Ich bin auch offen für andere Vorschläge.

Bitte beachten Sie, dass ich eine Einzelperson bin und nicht für ein Unternehmen arbeite. Mein Produkt ist auch sehr spezifisch, es wird nicht viel verkauft. Ich möchte nur, dass Sie wissen, dass ich es mir nicht leisten kann, einen Anwalt zu konsultieren, um jemanden zu verklagen oder eine kommerzielle Lizenz vorzubereiten. Ich bin nur auf der Suche nach einer einfachen Möglichkeit, mein einfaches Produkt zu schützen, wenn es tatsächlich möglich ist, irgendwie ...

67
Ricardo Amaral

Das Verschleiern von Dingen kann Ihre legitimen, gesetzestreuen Kunden nur stören, während die Personen, die Sie abreißen würden, sowieso nicht Ihr Ziel sind. (andere Gedanken über Verschleierung herausgeschnitten)

Ein weiterer Vorschlag zum Schutz Ihrer Software: Erstellen Sie ein Geschäftsmodell, in dem der Code einen unvollständigen Teil des Wertes Ihres Angebots darstellt. Verkaufen Sie beispielsweise Produktlizenzen zusammen mit dem Zugriff auf einige Daten, die Sie auf Ihrer Site verwalten, oder lizenzieren Sie das Produkt mit einem Abonnementmodell oder mit dem Kundensupport.

Die Gestaltung eines EULAs ist eine rechtliche Angelegenheit, keine Kodierungssache. Sie können anfangen, indem Sie einige EULA-Texte für von Ihnen verwendete Produkte und Websites lesen. Sie können einige interessante Details finden!

Das Erstellen einer proprietären Lizenz ist äußerst flexibel und wahrscheinlich ein Thema, das über den beabsichtigten Umfang von StackOverflow hinausgeht, da es nicht unbedingt um das Kodieren geht.

Einige Teile eines EULAs, die mir in den Sinn kommen:

  • Beschränkung Ihrer Haftung, wenn das Produkt Fehler aufweist oder Schäden verursacht.
  • Angabe, wie der Kunde seine lizenzierte Software für wie lange, auf wie vielen Maschinen, mit oder ohne Umverteilungsrechte usw. verwenden kann.
  • Sie erhalten Rechte zur Überprüfung ihrer Site, damit Sie die Lizenzen durchsetzen können.
  • Was passiert, wenn sie gegen die EULA verstoßen, z. Sie verlieren ihr Privileg, Ihre Software zu verwenden.

Sie sollten einen Rechtsberater konsultieren, um ein kommerzielles EULA vorzubereiten.

edit: Wenn dieses Projekt die Kosten eines Anwalts nicht rechtfertigen kann, überprüfen Sie diese Ressourcen:

35
Bill Karwin

Sie müssen Ihre Ziele berücksichtigen:

1) Versuchen Sie zu verhindern, dass Personen Ihren Code lesen oder ändern? Wenn ja, benötigen Sie ein Verschleierungs-/Verschlüsselungswerkzeug. Ich habe Zend Guard mit gutem Erfolg benutzt.

2) Versuchen Sie, eine unbefugte Weiterverteilung Ihres Codes zu verhindern? Eine EULA/proprietäre Lizenz gibt Ihnen die rechtliche Befugnis, dies zu verhindern, wird es aber nicht wirklich aufhalten. Mit einem Schlüssel-/Aktivierungsschema können Sie die Nutzung aktiv überwachen, können jedoch entfernt werden, sofern Sie nicht auch Ihren Code verschlüsseln. Zend Guard verfügt auch über Funktionen, um ein bestimmtes Skript an einen bestimmten Kundencomputer zu sperren und/oder zeitlich begrenzte Versionen des Codes zu erstellen, wenn Sie dies möchten.

Ich bin nicht mit vBulletin und dergleichen vertraut, aber sie müssten entweder verschlüsseln/verschleiern oder ihren Benutzern vertrauen, dass sie das Richtige tun. Im letzteren Fall haben sie den Schutz einer EULA, die das Verhalten verbietet, das sie als unerwünscht empfinden, und das Rechtssystem, um Verstöße gegen die EULA zu untermauern. 

Wenn Sie nicht in der Lage sind, rechtliche Maßnahmen zum Schutz Ihrer Software zu ergreifen und nicht verschlüsseln/verschleiern möchten, stehen Ihnen folgende Optionen zur Verfügung: a) Geben Sie es mit einem EULA frei und auf das Beste hoffen oder b) überlegen, ob eine Open-Source-Lizenz angemessener ist und nur eine Neuverteilung zulässt.

14
Jim OHalloran

Sie können einen PHP-Compiler verwenden:

Roadsend

phc

8
grepsedawk

Ich habe mir den VBulletin-Quellcode in einiger Zeit nicht angesehen, aber die Art, wie sie es um 2003 herum machten, bestand darin, einen Aufruf an ihren Server in den Code einzubetten. IIRC, es befand sich auf einer wirklich langen Codezeile (wie 200-300 Zeichen lang) und wurde über mehrere String-Verkettungen und so weiter aufgelöst. 

Es hat nichts "Schlechtes" gemacht, wenn Sie es raubkopiert haben - das Forum funktionierte immer noch zu 100%. Die IP-Adresse Ihres Servers wurde jedoch zusammen mit anderen Informationen protokolliert, und diese verwendeten sie, um Nachforschungen anzustellen und rechtliche Schritte einzuleiten. 

Ihre Lizenznummer war in diesen Aufruf eingebettet, sodass sie leicht nachvollziehen können, auf wie vielen IPs/Websites eine bestimmte lizenzierte Kopie ausgeführt wurde.

6
Alarion

Wenn Sie keine "Cloud-App" erstellen können, auf die Sie sich selbst hosten und auf die über das Web zugegriffen wird, können Sie eine virtuelle Appliance mit einem virtuellen Server (von VMWare, Parallels, Sun usw.) erstellen und eine "Lite" installieren "Version von Linux dazu. Fügen Sie Ihren PHP -Code in die virtuelle Umgebung ein und installieren Sie die virtuelle Maschine auf ihrem Server. Stellen Sie sicher, dass Sie eine Möglichkeit erstellen, um das Laden in root zu verhindern. Natürlich müssen Sie den Kunden selbst besuchen.

2
McG

meiner Meinung nach ist es aber nur für den Fall, wenn Ihr PHP-Code-Programm für ein Standalone-Modell geschrieben wurde ... beste Lösungen ist c) Sie könnten das PHP in einen Container wie Phalanger (.NET) packen. Jeder weiß, dass es eng an das System gebunden ist, insbesondere wenn Ihr Programm für Windows-Benutzer gedacht ist. Sie können einfach Ihren eigenen Schutzalgorithmus in Windows-Programmiersprachen wie .NET/VB/C # oder was auch immer Sie in .NET prog.lang.family-Sets kennen, erstellen.

1
achy

Sie vertreiben ihre Software unter einer proprietären Lizenz . Das Gesetz schützt ihre Rechte und hindert ihre Kunden daran, die Quelle neu zu verteilen, obwohl es dabei keine Schwierigkeiten gibt.

Wie Sie vielleicht wissen, ist die Verletzung des Urheberrechts (Piraterie) von Softwareprodukten ein ziemlich häufiges Phänomen .

1
Eran Galperin

Siehe unseren SD PHP Obfuscator . Verarbeitet riesige Systeme von PHP - Dateien. Keine Laufzeitanforderungen auf dem PHP Server. Kein zusätzlicher Laufzeitaufwand.

[EDIT Mai 2016] In einer kürzlichen Antwort wurde festgestellt, dass Zend PHP5.5 nicht verarbeitet. Der SD PHP Obfuscator tut dies.

0
Ira Baxter

Die einzige Möglichkeit, Ihre PHP-Anwendungen wirklich vor anderen zu schützen, besteht darin, den Quellcode nicht zu teilen. Wenn Sie Ihren Code irgendwo online posten oder ihn über ein Medium an Ihre Kunden senden, haben andere Personen als Sie Zugriff auf den Code.

Sie können jeder Kopie Ihres Codes ein eindeutiges Wasserzeichen hinzufügen. Auf diese Weise können Sie Leckagen zu einem einzelnen Kunden zurückverfolgen. (Aber wird das Ihnen helfen, da der Code bereits außerhalb Ihrer Kontrolle liegt?)

Der meiste Code, den ich sehe, kommt mit einer Lizenz und möglicherweise einer Garantie. Eine Zeile am oberen Rand des Skripts, in der die Benutzer aufgefordert werden, das Skript nicht zu ändern, ist möglicherweise ausreichend. Selbst; Wenn ich nicht offenen Quellcode finde, verwende ich ihn nicht in meinen Projekten. Vielleicht bin ich ein bisschen betrogen, aber ich erwarte, dass ppl meinen non-OSS-Code nicht verwendet!

0
qualbeen

Zend Guard unterstützt kein PHP 5.5 und ist leicht rückgängig zu machen, wählen Sie http://www.ioncube.com für Verschleierung. http://wwww.phplicengine.com kann die Skripts remote oder lokal lizenzieren.

0
Igdrazil