Verschlüsselung mit IonCube
Empfehlungen für die Verschlüsselung von Plugins mit IonCube.
Mit Einzug von PHP 7.1 und 7.2 ergeben sich notwendige Änderungen an der IonCube Verschlüsselung für Ihre Plugins.
Um weiterhin Plugins mit IonCube zu verschlüsseln wird mindestens der IonCube Encoder 10.2 benötigt um die "Bundle" Funktion zu nutzen.
Durch die grundlegenden Änderungen in PHP benötigen PHP 7.2 kompatible verschlüsselte Dateien eine andere Verschlüsselung als PHP 5.6-7.1, folglich muss nun die Bundle Funktion in IonCube verwendet werden um 2 unterschiedliche Verschlüsselung zu kombinieren.
Ohne diese Bundle Funktion müssten ansonsten 2 verschiedene Downloads für jedes Plugin angeboten werden (einmal mit ioncube_encoder.sh -56 und einmal mit ioncube_encoder.sh -71) um PHP 5.6-7.2 abzudecken.
Änderung an Ihrer bisherigen Verschlüsselungsfunktion:
Prinzipiell muss nun zwei mal eine Verschlüsselung durchgeführt werden, im ersten Durchlauf mit der Option
ioncube_encoder.sh -56 --bundle
Sollte bereits --replace-target verwendet werden, so muss dies entfernt werden (–bundle ersetzt ebenfalls alle Dateim in Target Directory)
und im zweiten Durchlauf mit
ioncube_encoder.sh -71 --add-to-bundle
IonCube fügt nun in Ihren verschlüsselten Dateien jeweils einen Block für die unterschiedlichen PHP Versionen ein.
Weitere Informationen zur Bundle Funktion finden Sie im IonCube User Guide (Abschnitt 3.14)
Prüfung auf xt:Commerce Lizenzkey
Bei Plugins empfehlen wir statt der Lizenzierung auf IP,Domain oder Mac, diese an die xt:Commerce Lizenznummer zu binden.
Hierzu kann im Plugin folgender Code verwendet werden:
if (!function_exists('ioncube_license_properties')) { $lic_parms = array(); } else { $lic_parms = ioncube_license_properties(); } if (isset($lic_parms['LICENSEKEY']['value'])) { $_lic = _SRV_WEBROOT . 'lic/license.txt'; if (!file_exists($_lic)) die('- main lic missing -'); $val_line = ''; $bline = ''; $_file_content = file($_lic); foreach ($_file_content as $bline_num => $bline) { if (strpos($bline, 'key:', 0) !== FALSE) { $val_line = $bline; break; } } $val_line = explode(':', $val_line); $_shop_lic = ''; $_shop_lic = trim($val_line[1]); unset($val_line); unset($_lic); if ($_shop_lic != md5($lic_parms['LICENSEKEY']['value'])) die('- Plugin license not matching, contact support -'); }
Fügen Sie hierzu Ihrem Plugin bei der Verschlüsselung eine Property LICENSEKEY hinzu.