Roland: PHP Schutzmechanismen für Code

Hi!

PHP gibt es nur im Quelltext, d.h. er lässt sich schwer schützen. Habt ihr Ideen wie man es Personen, die einen (gekauften) PHP-Code OHNE Erlaubnis weitergeben wollen, schwer machen kann?
Ich weiß, dass das nicht mit dem open-source-Prinzip zusammenpasst, aber ich muss ja auch von was Leben^^

Mir ist bis jetzt die Möglichkeit des Code unleserlich machens bekannt (z.B. PHP Obfuscator)

Nach kurzem Nachdenken ist mir noch folgendes eingefallen:

  • Wenn der Code nur für eine Domain gekauft wurde, kann ich denn md5 von $_SERVER['HTTP_HOST'] (falls es auf dem Server aktiviert ist) einmal in eine var speichern und dann bei jedem Aufruf einen Vergleich machen, falls es nciht stimmt wird die Funktion abgebrochen
  • Wenn der Code nur für eine gewisse Zeit verwendet werden darf: vergleich mit der time()-Funktion

Habt ihr bessere/andere Ideen?

Vielen Dank
Roland

    • Wenn der Code nur für eine Domain gekauft wurde, kann ich denn md5 von $_SERVER['HTTP_HOST'] (falls es auf dem Server aktiviert ist) einmal in eine var speichern und dann bei jedem Aufruf einen Vergleich machen, falls es nciht stimmt wird die Funktion abgebrochen
    • Wenn der Code nur für eine gewisse Zeit verwendet werden darf: vergleich mit der time()-Funktion

    Du vergisst, dass jeder, der sich mit dem Code auseinandersetzt die Abfangroutinen entfernen kann...

    Gruß, Samoht

    --
    fl:| br:> va:) ls:< n4:( ss:) de:] js:| mo:}
    "Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."
    (Kristian Wilson, Nintendo, 1989)
    1. Nein, das hab ich nicht vergessen, aber das war noch das aus meiner Sicht effektivste, irgendwie mitten im Code mit einem die(''); abzuberechen.
      Wenn Sich jemand mit PHP auskennt und den gesamten Text durchschaut kann ich es nicht verhindern. Ich kann es nur möglichst schwer machen, und wenn man eine rießenlange code-wurscht aus lauter unverständlcihen variablen hat, wo dann irgendwo z.B. $fshghfsdgdfg=$_SERVER['HTTP_HOST']; steht, viel später dann $fshghfsdgdfg=md5($fshghfsdgdfg); und dann noch mal ganz wo anders if($z7nb7nhfgdfg7bdfg!=$fshghfsdgdfg) die(''); is es aus meiner Sicht nicht grad soo einfach...

      1. Nein, das hab ich nicht vergessen, aber das war noch das aus meiner Sicht effektivste, irgendwie mitten im Code mit einem die(''); abzuberechen.
        Wenn Sich jemand mit PHP auskennt und den gesamten Text durchschaut kann ich es nicht verhindern. Ich kann es nur möglichst schwer machen, und wenn man eine rießenlange code-wurscht aus lauter unverständlcihen variablen hat, wo dann irgendwo z.B. $fshghfsdgdfg=$_SERVER['HTTP_HOST']; steht, viel später dann $fshghfsdgdfg=md5($fshghfsdgdfg); und dann noch mal ganz wo anders if($z7nb7nhfgdfg7bdfg!=$fshghfsdgdfg) die(''); is es aus meiner Sicht nicht grad soo einfach...

        Das war auch nicht in meinem Zitat enthalten, sondern lediglich die Domain- und/oder Zeitabfrage... :)

        Gruß, Samoht

        --
        fl:| br:> va:) ls:< n4:( ss:) de:] js:| mo:}
        "Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."
        (Kristian Wilson, Nintendo, 1989)
        1. ja, aber das was ich beschreib is ja die domainabfrage ;)
          Das oben is der Schutzmechanismus "Domainabfrage"

          Das ich nicht

          //Kopierschutz
          if($_SERVER['HTTP_HOST']!="wwwdomain.de") die('Der Kopierschutz auf Zeile 5 hat abgebrochen');
          // Ende Kopierschutz

          schreib is auch klar^^

          lg
          Roland

  1. Mal in eine ganz andere Richtung: Vielleicht ist das Software as a Service (SaaS)-Konzept für dich attraktiver als der Verkauf von Lizenzen.
    Man kann zB beim Woltlab Burning Board sehen, dass andere Konzepte nicht aufgehen. Gerade wenn die meisten Kunden im Consumer-Umfeld zu finden sind, lässt sich sowas nicht vermeiden.

    Ansonsten ist für dich vielleicht Zend Guard (http://www.zend.com/de/products/guard/) eine Option, die kostet aber.

  2. Hallo,

    ich möchte auf mein etwas zurückliegendes Posting </archiv/2008/3/t168045/#m1096879> verweisen. Du kannst es Leuten nur erschweren, an den Code zu kommen, es aber nicht verhindern.

    Viele Grüße,
    Christian

    1. Interessant, gibts ein freeware tool, das diese Opcodes erstellt und in Binärcode umwandelt.

      1. Hallo,

        Interessant, gibts ein freeware tool, das diese Opcodes erstellt und in Binärcode umwandelt.

        * PHP generiert für *jede* Datei, die es verarbeitet, diese Opcodes. Ich
           habe in dem Posting das nur visualisiert. Die sind *immer* im Speicher
           vorhanden - erstellt werden diese also von PHP selbst.

        * Es gibt Tools, die die erstellen Opcodes auf der Platte speichern können.
           Dazu zählen zum Beispiel Zend Guard oder der ionCube Encoder.
           Die kosten aber etwas. Kostenlose Tools kenne ich nicht, kann aber sein,
           dass es sie gibt.

        * Diese Tools benötigen eine modifizierte PHP-Installtion, damit die Binär-
           daten geladen werden können - es kann also nicht jeder installieren.

        * Aus den Opcodes kann man jedoch mit vergleichsweise geringem Aufwand
           wieder brauchbaren Sourcecode erzeugen (wie ich in meinem anderen
           Posting dargelegt habe) - sie bieten also nur eine zusätzliche Hürde aber
           keinen wirklichen Schutz.

        Viele Grüße,
        Christian

        1. Hello,

          was ist denn mit der Turck-Engine?
          Macht die nicht auch soetwas?
          http://turck-mmcache.sourceforge.net/index_old.html

          Liebe Grüße

          Tom vom Berg

          1. Hallo Tom,

            was ist denn mit der Turck-Engine?
            Macht die nicht auch soetwas?
            http://turck-mmcache.sourceforge.net/index_old.html

            Ja, stimmt, die hatte ich ganz vergessen. Bzw. eigentlich ist das ein Opcode Cache im Speicher (wie APC) - kann aber auch Opcodes in Binärform auf der Festplatte speichern und wieder laden und eignet sich damit auch zum "Kodieren" von PHP-Dateien.

            Viele Grüße,
            Christian

        2. Naja, man kann ja also erster Obfuscator benutzen und dann noch Opcodes davon ;)

  3. Hi!

    PHP gibt es nur im Quelltext, d.h. er lässt sich schwer schützen. Habt ihr Ideen wie man es Personen, die einen (gekauften) PHP-Code OHNE Erlaubnis weitergeben wollen, schwer machen kann?
    Ich weiß, dass das nicht mit dem open-source-Prinzip zusammenpasst, aber ich muss ja auch von was Leben^^

    Dass sich PHP-Quelltext nicht vor Weitergabe schützen lässt, haben andere hier schon deutlich gemacht.

    Aber wie wäre es ("ich muss ja auch von was Leben") wenn Du möglicherweise vorhandene HMTL-Ausgaben so gestaltest, dass zumindest unvorsichtige bzw. unwissende Wiederverwerter per Google (u.a.) ausfindig gemacht werden und zur Kasse gebeten werden können. Zum Beispiel könnte Bestandteil eines Formulars eine Grafik sein, in der für den Betrachter nicht sichtbar Dein Name "eingebettet" ist. Statt in der Umgebungsfarbe #5345f3 steht Dein Name in #5345f4. Das sieht keiner. So kannst Du in google nach Deinem jpg suchen und erwischt Deine Pappenheimer. Bei Beschriftungen wähle eine spezielle Benennung, z.B. "Name [Vor- und Nachname]:" statt "Vorname: ... Nachname:...". Je mehr Eigentümlichkeiten Du versteckst, um so besser kannst Du ggf. vor Gericht "indizieren" (weil es wohl kein *Beweis* ist), dass dieser Quellcode von Dir ist.

    Ich weiss, das ist alles nicht so das Wahre. ;-)

    Ich halte das so: Grundsätzlich kein Buy-Out des Quelltextes. I.d.R. biete ich aber das Auslagern von templates an, die der Kunde dann selbstständig hosten und pflegen kann. Dann bleibt das "Herzstück" bei mir, ich kassiere für den Nutzen, habe keine weitere (ansonsten kostenpflichtige) Arbeit damit und stelle sicher, dass das "Herzstück" nicht weitergegeben werden kann. Ich ganz speziellen Fällen ist ein Buy-Out natürlich möglich. Aber glaube mir, zu DEM Preis kann der Kunde fast das Ganze auch woanders nochmal programmieren lassen - aber auch nur fast. Das überlegt der sich dreimal.

    Kommt noch folgende Erfahrung dazu:
    Entweder Du verlangst einen *angemessenen* Preis, dann verlierst Du einen Kunden. Oder Du nimmst das, was der Kunden zahlen WILL, dann schneidest Du schlecht ab.
    Die besten Kunden sind Stammkunden, die man sich pflegt, die zwar kleine, aber kontinuierlich Beträge für Pflege, Wartung, Erweiterung und Service abdrücken, die dann wieder Neukunden ziehen usw.
    Ein Kunde, der den Quelltext kauft, ist weg. Einer, der Serviceleistungen monatlich bezahlt, bleibt.

    Aber Ausnahmen gibt es ja bekanntlich immer.

    Gruß vom foomaker

    --
    Natürlich glaube ich an die Existenz von Ausserirdischen. Schliesslich gibt es ja auch das PERFEKTE SCRIPT.