PHP - Quellcodeverschlüsselung

Also ich habe mich nun für IonCube Encoder entschlossen und habe diesen auch gekauft und die Verschlüsselung funktioniert super!

Eine Frage dazu habe ich noch: Ich möchte gern ein Script vermieten. Das Script ist natürlich durch IonCube gesichert und verschlüsselt. Nun möchte ich aber noch eine kleine Kontrolle haben, dass wenn das Script nicht mehr gemietet wird, es für den Mieter nutzlos ist. Man könnte ja eine Sicherheitsabfrage zu einem Server machen und fragen ob der Lizenzschlüssel zu der Domain passt und aktiv ist. Aber wie würdet Ihr das realisieren, sodass es auch sicher ist?
 
Wenn dein Code bereits verschlüsselt ist brauchst du dir doch kaum Sorgen um die Sicherheit machen?
Lege bei dir eine Datenbank an, mit den erlaubten Lizenzen und einem Datumsstempel. Beim start des Script's prüfst du immer die Gültigkeit. Ist die Lizenzzeit abgelaufen lässt du automatisch den Quellcode löschen bis auf eine Zeile, wie LIZENZ ABGELAUFEN :p
 
Also wie gesagt, verschlüsselt ist es bereits.

Es soll aber vermietet werden. Klar, der Code ist geschützt, aber was ist wenn dieser nicht mehr zahlt? Dann habe ich keinen Einfluss mehr drauf. Also möchte ich gern eine kleine Abfrage auf meinem Server machen.

Wie könnte man das mit einer Datei realisieren? Also ich sende dem Mieter jeden Monat nach Zahlungseingang eine Textdatei zu o.ä., welche er auf den Server packt. Aber wie könnte man das so unkenntlich machen, sodass er diese nicht einfach editiert? Könnte man darin nicht so etwas wie ein Ablaufdatum festlegen, diese dann per Ioncube auch verschlüsseln.

Wie könnte denn so ein Abfragecode zu meinem Server aussehen? Also auch ohne Sicherheitslücken?
 
Soviel Arbeit würde ich dem Kunden gar nicht zumuten wollen.

Viel einfacher wäre es mit einem HTTP Request, der einmal im Monat durchgeführt wird. Der sendet eine Anfrage an deinen Server und falls er mit true antwortet, dann kann das Skript laufen, falls es false zurück bekommt, hört das Skript auf zu arbeiten.

Dies wäre ein vernünftiges Lizenzmodell.

Allerdings ist dies selbst verschlüsselt kein 100%iger Schutz, da man sich einfach anschauen könnte, was dort gesendet wird und das ganze umleiten könnte auf den eigenen Server.

Also müsste man eine verschlüsselte Verbindung aufbauen... Und so weiter.

Es steigert sich ins Unermessliche der Aufwand ein solches Skript zu machen.

Es gibt eine viel einfachere Möglichkeit für das ganze:
Ein Vertrag.

Ein Vertrag ist ein rechtsgültiges Mittel um das ganze abzusichern. Darin kann man abstecken, was mit dem Skript gemacht werden darf und was nicht.
Auch etwaige Lizenzkosten oder sonstige Gebühren können dort erfasst werden, auch die Dauer einer Nutzung.
Dort kann man dann auch Strafen für etwaige Vertragsbrüche angeben.

100%igen Schutz könntest du erreichen, wenn du alles auf deinem Server laufen lässt. Somit hätte der Kunde weder Zugriff auf deine Skripte, sprich du müsstest keinen Performanceverlust durch die Verschlüsselung in Kauf nehmen, und du kannst gleichzeitig selbstständig die Administration über die Lizensierung in die Hand nehmen.
 
Einen Vertrag gibt es ja bereits, in welchem auch Strafen vorgemerkt sind.

Ich möchte bloß gern noch etwas in der Hand haben. Denn wie schnell passiert es, dass der Mieter kein Geld mehr hat und einfach nicht mehr zahlt!? Und selbst wenn Vertragsstrafen festgesetzt sind, weiß jeder wie es heutezutage läuft; "Wo kein Geld ist, kann man keins holen..."

Also sehe ich richtig, dass die Serverabfrage sinnlos ist und nur Performance kostet? Und selbst wenn man die Prüfung nur jeden Monat macht, muss ja der Termin für die nächste Prüfung irgendwo gespeichert werden oder? Dann würde er einfach den Termin hochsetzten und schon wäre die Prüfung außer Gefeacht gesetzt.

Wie schaut es denn aus, wenn ich jeden Monat oder jedes 1/2 Jahr dem Mieter eine Datei zusende, in welcher ein Schlüssel o.ä. ist und ich mit meinem verschlüsselten Script die Datei überprüfe? Wie könnte man das realisieren, ohne dass in der Datei einfach ein Zeitstempel ist?

// EDIT:

Wie sieht es aus, wenn ich dem Mieter eine Datei zusende, in welcher ein verschlüsselter String ist und ich im Script diesen wieder durch ein Passwort entschlüssele? Ich habe folgenden Quellcode gefunden und möchte gern wissen, was ihr davon haltet bzw. wie sicher das ist, wenn ich z.B. zum verschlüsseln einen 100-stelligen Code nutze!?

PHP:
function encode($time,$key) {
	for ( $i = 0; $i < strlen ( $time ); $i ++ ) {
  		$validity .= chr ( ord ( $time { $i } ) ^ ord ( $key { $i % strlen ( $key ) } ) );
	}
	return base64_encode ( $validity );
}

function decode($code,$key) {
	$code = base64_decode ( $code );
	for ( $i = 0; $i < strlen ( $code ); $i ++ ) {
		$time .= chr ( ord ( $code { $i } ) ^ ord ( $key { $i % strlen ( $key ) } ) );
	}
 	return $time;
}

echo "Verschlüsselt: ";
echo encode ( '12.12.2009', 'fdfgfdfghfd' );
$verschlüsselt = encode ( '12.12.2009', 'fdfgfdfghfd' );
echo "<br>";
echo "Entschlüsselt: ";
echo decode ( $verschlüsselt, 'fdfgfdfghfd' );

Komisch ist nur, dass wenn man z.B. 1 oder 2 Zeichen entfernt, immernoch das richtige herauskommt!?
Gibt es vll. eine bessere Möglichkeit als die obige oder was würdet ihr noch daran ändern?

Vielen Dank für eure Hilfe ;)
 
Zuletzt bearbeitet:
Zurück