Avviso: l'autore di questa risposta è affiliato con ionCube. Si prega di tenere presente che le risposte e i commenti inviati dai dipendenti di ionCube, pur con buone intenzioni, possono essere soggetti a conflitti di interesse.
Le risposte qui sono buone, anche se pensieri come "qualsiasi cliente ficcanaso non avrebbe molti problemi a estrarre la chiave di crittografia dal codice compilato" allunga un po 'le cose perché gli utenti finali e la maggior parte degli sviluppatori PHP in genere non hanno le conoscenze richieste in termini di modificare il motore PHP per esporre i dati di runtime in qualsiasi modo utile.
La protezione da codice byte si basa sulla compilazione di codice in una lingua diversa, il bytecode, e sta facendo il massimo sforzo sia per rendere il bytecode e i metadati difficili e costosi da scoprire, sia per capire se lo si ottiene. ionCube compila il codice, usa varie tecniche per proteggere il bytecode e usa un motore di esecuzione PHP non standard per poter utilizzare il bytecode che differisce dal bytecode che normalmente PHP genererebbe. Ciò rappresenta la dimensione relativamente grande del componente Loader di runtime rispetto a quello di altre soluzioni.
L'utilizzo di funzioni PHP come get_defined_vars()
che menzioni potrebbe non essere possibile perché i file possono essere codificati in modo da funzionare solo con file codificati prodotti dalla stessa copia dell'Encoder e fallire se un file codificato è stato sostituito con uno non codificato. Allo stesso modo, l'uso dell'offuscamento delle variabili può interrompere i risultati di tali funzioni.
Ci sono sono limitazioni a ciò che è possibile con PHP essere opensource, così come i compromessi nel bilanciare l'obiettivo della protezione con le prestazioni di runtime e la compatibilità con le installazioni standard, in particolare, i server condivisi. Mentre le password per mysqli_connect()
, ad esempio, potrebbero essere ben protette, un hacker potrebbe modificare la libreria mysql o il wrapper della libreria mysqli PHP e ricompilare PHP per esporre la password in fase di runtime. Tuttavia, questo potrebbe non essere un problema nella pratica, e se lo fosse, ci sono modi per aumentare la sicurezza a condizione che non sia richiesta la compatibilità con le installazioni PHP predefinite. Si consiglia di contattare ionCube per un consiglio per ottenere informazioni sulle strategie che meglio si adattano al tuo caso d'uso, e potresti imparare delle possibilità non pubblicizzate di cui non saresti a conoscenza.