Sicherer Perl-Code?
Flip
- perl
Hallöle zusammen,
Ich arbeite gerade an einem Content Management System.
Vielleicht ist es eine dumme Frage, aber:
ist es irgendwie möglich, den eigentlichen PerlCode des CMS auf meinem Server ruhen zu lassen, und ihn vom Server des Kunden aus mit einem Script aus- bzw. einzulesen und auszufühen?
oder gibt es eine andere Lösung um den Code vor neugierigen Augen zu schützen?
über eine Antwort bin ich euch dankbar,
bis dann, ph
Hallöle zusammen,
Ich arbeite gerade an einem Content Management System.
Vielleicht ist es eine dumme Frage, aber:
ist es irgendwie möglich, den eigentlichen PerlCode des CMS auf meinem Server ruhen zu lassen, und ihn vom Server des Kunden aus mit einem Script aus- bzw. einzulesen und auszufühen?
oder gibt es eine andere Lösung um den Code vor neugierigen Augen zu schützen?
über eine Antwort bin ich euch dankbar,
bis dann, ph
Moin Moin !
Nein, Code verstecken geht nicht. Perl ist eine Scriptsprache, daran kannst Du nichts ändern. Wenn Du mir mit Bytecode kommst, gut, dann benutze ich B::Disassember und/oder B::Deparse und ggf. noch einige andere Perl-Module aus der B::-Ecke, und schon habe ich annähernd Deinen Quelltext wieder. Wenn dein Script beim Kunden Module nachlädt, kann man das garantiert nachvollziehen und emulieren, und schon ist dein CMS im Quelltext in Kopie auch beim Kunden.
Wenn Du "unleserliche" Programme weitergeben haben willst, nimm C oder Fortran oder irgendwas anderes, was native Code erzeugt. Java hat das gleiche Problem wie Perl, auch für Java gibt es fast perfekte Decompiler. Auch für Delphi und Visual Basic habe ich sowas schon gesehen.
Was ist Dein Problem ? "Mein" Programm (einige 10.000 Codezeilen Perl) läuft bei diversen Kunden (keine kleinen Fische), sie könnten jederzeit den gesamten Quelltext einsehen, incl. der in C geschriebenen Hilfsprogramme. Sie tun es nicht, weil es zu viel Code ist, und sie haben einen Lizenzvertrag mit meinem Arbeitgeber. Und der hat eine echt gute Rechtsabteilung. ;-)
Alexander
Hi,
Grundsätzlich muß ich erstmal Alexander zustimmen.
Es wäre vielleicht möglich den Code auf deinem Server in irgendeiner Datei zu speichern diese über LWP::Simple zu holen und mit eval oder so auszuführen. Da müßtest du aber stark aufpassen, wann was interpoliert wird usw. Tres dificile. Trotzdem wäre es ohne (größeren) Aufwand möglich an den Quelltext heranzukommen.
Es wäre halt wie gesagt sinnvoller eine entsprechende Lizenzvereinbarung abzuschließen und ggf. rechtlich gegen den Kunden vorzugehen.
Außerdem würde es, denk Ich, den Open-Source-Gedanken, der ja auch durch/mit Perl verfolgt wird, entgegenstehen.
mfg. Maik
Hi,
Grundsätzlich muß ich erstmal Alexander zustimmen.
Vielen Dank ;-)
Es wäre vielleicht möglich den Code auf deinem Server in irgendeiner Datei zu speichern diese über LWP::Simple zu holen und mit eval oder so auszuführen. Da müßtest du aber stark aufpassen, wann was interpoliert wird usw. Tres dificile. Trotzdem wäre es ohne (größeren) Aufwand möglich an den Quelltext heranzukommen.
Vielleicht kann ich das Problem auf ein kleineres zurückführen, das ich mit meinem "großen" Programm habe: Ich habe eine Konfigurationsdatei, in der im Klartext Benutzername und Password für die Datenbankverbindung stehen. Das mögen einige Kunden nicht, also soll mindestens das Password verschlüsselt werden. Dummerweise muß es aber wieder im Klartext an die Datenbank-API übertragen werden. Das heißt also, daß ich den Entschlüsselungsalgorithmus in der Applikation -- also in Perl -- unterbringen muß. Also kann jeder mit etwas Mühe den Entschlüsselungscode suchen, finden und benutzen; die gesamte Verschlüsselung ist damit wirkungslos und nur unnötige Rechnerei, sie täuscht außerdem Sicherheit vor, wo keine Sicherheit ist.
Ersetze Password durch CMS-Quelltext und Datenbank-API durch Perl-Compiler und Du hast das Original-Problem.
Löse mein Problem (ohne Binärcode das erlaubt das Konzept der Anwendung nicht und es würde das Problem nur weiter verschleiern) und ich löse das CMS-Problem. ;-)
Ich bin zu 99,999% sicher, das mein Problem ein unlösbares Problem ist.
Es wäre halt wie gesagt sinnvoller eine entsprechende Lizenzvereinbarung abzuschließen und ggf. rechtlich gegen den Kunden vorzugehen.
Erstmal Rechtschutzversicherung, dann Anwalt, dann Lizenz, dann ggf. wieder Anwalt und Gericht. ;-)
Außerdem würde es, denk Ich, den Open-Source-Gedanken, der ja auch durch/mit Perl verfolgt wird, entgegenstehen.
Naja, Du *mußt* Deinen Code ja nicht veröffentlichen. Aber wenn Du Fehler in bestehendem Code meldest und ggf. sogar Patches an den Maintainer lieferst, wenn Du Teile Deiner Anwendung als Module veröffentlichst, dann dürfte die Perl-Gemeinde schon zufrieden sein.
Alexander
mfg. Maik
Hi auch,
Es wäre vielleicht möglich den Code auf deinem
Server in irgendeiner Datei zu speichern diese über
LWP::Simple zu holen und mit eval oder so
auszuführen. Da müßtest du aber stark aufpassen,
wann was interpoliert wird usw. Tres dificile.
Trotzdem wäre es ohne (größeren) Aufwand möglich an
den Quelltext heranzukommen.
Eben: Ich baue einfach direkt vor dem "eval" eine Aus-
gabe ein. Denn der Code, der das LWP::Simple ausführt,
muß ja in lesbarer Form auf dem Kundenrechner liegen.
Viele Grüße
<img src="http://www.schroepl.net/projekte/gzip_cnc/gzip_cnc.gif" border=0 alt=""> Michael