PHPBlog.it

Offuscare o proteggere il nostro codice PHP – Introduzione

PHP Obfuscator, gratuito

Attenzione: Questo articolo è un’introduzione alle possibili soluzioni adottabili per offuscare il nostro codice, le varie soluzioni saranno approfondite in una serie di articoli successivi.

Penso che molti programmatori PHP sarebbero contenti di poter proteggere il loro codice da sguardi indiscreti o da utilizzi non autorizzati.
Si pensi per esempio a quando si realizza una bozza di un progetto, sareste contenti di sapere che il committente lo distribuisce a vostra insaputa? A me no di certo. Potremmo ospitare la bozza su un nostro server senza consegnare il codice, potremmo anche rimuovere il progetto dopo la sua analisi da parte del cliente, ma se ciò non fosse possibile per motivi di stile o per altri motivi dovremmo affidarci ad altre tecniche.

Esistono due principali metodi che ci permettono di proteggere il nostro codice, attenzione però: il livello di protezione non è mai totale (è cioè sempre possibile aggirare il metodo di protezione per ottenere il sorgente dello script) ma con un po’ di fortuna riusciremo ad allontanare il nostro codice da sguardi indiscreti, eccoli:

Il primo metodo è molto semplice: nominare le variabili in modo da renderle simili fra loro, rimuovere gli spazi e non andare a capo, come nell’esempio (non testato), che vi fa capire in linea di massima ciò che intendo:

[source:Php]
<?php
$mysql_address=”localhost”;
$mysql_username=”root”;
$mysql_password=”";
$mysql_database=”mio_database”;
$mysql_connessione=mysql_connect($mysql_address,$mysql_username,$mysql_password);
mysql_select_db($mysql_database,$mysql_connessione);
$query=”SELECT * FROM $mysql_database.visite WHERE data=’19910429′”;
$risultato=mysql_query($query, $mysql_connessione);
$quanti=mysql_num_rows($risultato);
echo “il 29 aprile 1991 sono venuti a trovarci $quanti visitatori!”;
mysql_close($mysql_connessione);
?>
[/source]
Questo diventerà
[source:Php]
<?php $mxazfhm=”localhost”;$mxgzfhm=”root”;$mxazfbm=”";$mxasfhm=”mio_database”;$mxazthm=mysql_connect($mxazfhm,$mxgzfhm,$mxazfbm);mysql_select_db($mxasfhm,$mxazthm);$mcazfhm=”SELECT * FROM $mxasfhm.visite WHERE data=’19910429′”;$mxzafhm=mysql_mcazfhm($mcazfhm, $mxazthm);$maczfhm=mysql_num_rows($mxzafhm);echo “il 29 aprile 1991 sono venuti a trovarci $maczfhm visitatori!”mysql_close($mxazthm);?>
[/source]

Esistono software come PHP Obfuscator (nell’immagine di questo articolo) che automatizzano il processo di sostituzione.

Un utente esperto sarà indubbiamente in grado di risalire al codice originale in poco tempo: il livello di protezione di questa soluzione è proporzionale alla sua facilità d’uso, cioè basilare. E’ però vero che potremo utilizzare lo script senza dover installare alcun software aggiuntivo, e questo è davvero un bel vantaggio.

Non vi preoccupate se l’efficacia del metodo precedentemente descritto non vi soddisfa: esiste un secondo metodo: utilizzare software progettati per gestire la protezione (quella seria) del nostro codice (come Zend Guard).
Come funzionano questi software? E’ bene aver presente la strada che percorre il nostro script prima di tornare nel browser: esso infatti, dopo essere stato riconosciuto in una pagina, viene interpretato e successivamente viene restituito l’output che verrà caricato all’interno della pagina. Il riconoscimento dei frammenti di codice avviene tramite la ricerca dei tags php (in genere <?php; ?>), dopo aver riconosciuto il codice esso viene trasformato in linguaggio macchina, ecco il problema: il codice PHP deve essere “puro”, ovvero non cifrato per essere comprensibile! I software che si occupano di cifrare e poi decifrare il codice (l’analisi ed il giudizio di questi saranno il tema di una serie di articoli che approfondiranno l’argomento) inseriscono un controllo del sorgente tra la fase di riconoscimento del codice e quella di trasformazione in linguaggio macchina, se il controllo troverà files cifrati li trasformerà nel linguaggio comprensibile dal compilatore, ovvero quello “puro”. Attenzione però: non tutti i servizi di hosting offrono la possibilità di utilizzare queste soluzioni.

Indice: Introduzione

Commenti

  • Questo articolo è stato segnalato su ZicZac.it….

  • diggita.it scrive:

    Offuscare o proteggere il nostro codice PHP – Introduzione…

    Penso che molti programmatori PHP sarebbero contenti di poter proteggere il loro codice da sguardi indiscreti o da utilizzi non autorizzati.
    Si pensi per esempio a quando si realizza una bozza di un progetto, sareste contenti di sapere che il committen…

  • upnews.it scrive:

    Offuscare o proteggere il nostro codice PHP – Introduzione…

    Penso che molti programmatori PHP sarebbero contenti di poter proteggere il loro codice da sguardi indiscreti o da utilizzi non autorizzati.
    Si pensi per esempio a quando si realizza una bozza di un progetto, sareste contenti di sapere che il committen…

  • [...] articolo è un approfondimento di “Offuscare o proteggere il nostro codice PHP – Introduzione“, analizzeremo le funzionalità, i pregi ed i difetti di Zend Guard al fine di criptare uno [...]

  • [...] articolo è un approfondimento di “Offuscare o proteggere il nostro codice PHP – Introduzione“, analizzeremo le funzionalità, i pregi ed i difetti di Zend Guard al fine di criptare uno [...]

  • Lascia un Commento

    *