PHP  »  Articoli  »  Programmazione Php 

Proteggere il codice Php con bcompiler

di: Fabio Sutto     06 Novembre 2003

La necessità di proteggere i sorgenti da occhi indiscreti è meno sentita nell'ambito della programmazione per il WEB rispetto a quanto accade per le applicazioni tradizionali, e questo è particolarmente vero per un linguaggio come Php che appartiene al mondo dell'"Open Source".

Eppure può capitare di voler distribuire realizzazioni che hanno richiesto un particolare impegno evitando che il primo arrivato le possa imitare, o che sia necessario consegnare al cliente una copia di valutazione senza compromettere la possibilità di essere pagati.

Prodotti rinomati come Zend Encoder e il più economico ionCoube vanno in contro a queste esigenze, ma da qualche tempo esiste anche una soluzione gratuita frutto della grande fucina PEAR/PECL (http://pecl.php.net/): stiamo parlando del "Php bytecode compiler", o bcompiler (http://pecl.php.net/package/bcompiler).

A cosa serve bcompiler?

Questa estensione consente sia di convertire i sorgenti Php in un bytecode dal quale è virtualmente impossibile ricostruire gli esatti originali, sia di elaborare tale bytecode come normale codice Php. Bcompiler è stato creato da Alan Knowles con tre obiettivi:

  1. dare la possibilità di codificare classi e librerie di funzioni in un formato proprietario
  2. creare applicazioni Php-GTK che inglobino l'interprete php.exe
  3. studiare la realizzazione di un traduttore da Php a C

Si tratta di un estensione ancora sperimentale ma che già svolge in modo soddisfacente almeno la prima funzione, ed è proprio ciò di cui ci occuperemo in questo articolo.

Cosa non può fare

Non può migliorare le performance degli script in modo sensibile: a differenza dei due prodotti commerciali citati precedentemente non genera un bytecode ottimizzato, e anche se evita la fase di compilazione del sorgente Php aggiunge l'overhead dovuto all'importazione dei dati codificati.

Installazione

Il "package" con i sorgenti per Unix è disponibile in PECL (PHP Extension Community Library ), mentre l'estensione per Windows è stata inserita tra gli "Snapshot Php".

Non ci soffermeremo sull'installazione perchè la procedura è del tutto identica a quella descritta nell'articolo Php e SQLite, una piccola grande novità, ed è ben documentata anche nel manuale PEAR. Sottolineo soltanto il fatto che bcompiler richiede almeno Php v. 4.3.0 e che l'estensione per la compressione bzip2 (php_bz2) sia stata abilitata.

Consiglio anche agli utenti Windows di sbirciare nel package per Unix perchè contiene alcuni esempi utili e la descrizione di funzioni non documentate.

Limitazioni

Nel corso dell'articolo vedremo che non è possibile codificare interi script ma soltanto librerie di funzioni, singole classi e singole costanti.
Le variabili dichiarate al di fuori di classi e funzioni vanno definite in chiaro, ma la cosa rappresenta un problema di poco conto.

Guide PHP

Guida Symfony

Scopriamo quanto è facile programmare in PHP. Una guida al framework...

Guida PHP e MySql pratica

Esaminare e comprendere i comandi fondamentali di interazione tra...

Guida programmazione ad oggetti con PHP 5

Come creare applicazioni Web utilizzando la programmazione orientata...

Altre guide

Newsletter @PHP

Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Webmaster con PHP

01 Marzo 2010 a Milano
Disponibilità: 8 Posti

Corso Amministratore Linux

15 Febbraio 2010 a Roma
Disponibilità: 7 Posti

Corso Webmaster con PHP

29 Marzo 2010 a Roma
Disponibilità: 7 Posti