<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PHPBlog.it &#187; codice</title>
	<atom:link href="http://phpblog.it/tag/codice/feed/" rel="self" type="application/rss+xml" />
	<link>http://phpblog.it</link>
	<description>Solo un altro blog targato WordPress</description>
	<lastBuildDate>Mon, 21 May 2012 21:45:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Offuscare o proteggere il nostro codice PHP &#8211; Introduzione</title>
		<link>http://phpblog.it/2008/07/21/offuscare-o-proteggere-il-nostro-codice-php-introduzione/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=offuscare-o-proteggere-il-nostro-codice-php-introduzione</link>
		<comments>http://phpblog.it/2008/07/21/offuscare-o-proteggere-il-nostro-codice-php-introduzione/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 05:00:23 +0000</pubDate>
		<dc:creator>Davide Martignetti</dc:creator>
				<category><![CDATA[phpblog]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[sicurezza]]></category>
		<category><![CDATA[codice]]></category>
		<category><![CDATA[criptare]]></category>
		<category><![CDATA[offuscare]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[proteggere]]></category>

		<guid isPermaLink="false">http://phpblog.it/2008/07/21/offuscare-o-proteggere-il-nostro-codice-php-introduzione/</guid>
		<description><![CDATA[Attenzione: Questo articolo è un&#8217;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 [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://phpblog.it/2008/07/21/offuscare-o-proteggere-il-nostro-codice-php-introduzione/' addthis:title='Offuscare o proteggere il nostro codice PHP &#8211; Introduzione '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.fodlers.org/content/phpblog_it/images/phpobfuscator.png" alt="PHP Obfuscator, gratuito" /></p>
<p><strong>Attenzione: </strong>Questo articolo è un&#8217;introduzione alle possibili soluzioni adottabili per offuscare il nostro codice, le varie soluzioni saranno approfondite in una serie di articoli successivi.</p>
<p>Penso che molti  programmatori PHP sarebbero contenti di poter proteggere il loro codice da sguardi indiscreti o da utilizzi non autorizzati.<br />
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.</p>
<p><strong>Esistono due principali metodi che ci permettono di proteggere il nostro codice</strong>, 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&#8217; di fortuna riusciremo ad allontanare il nostro codice da sguardi indiscreti, eccoli:</p>
<p><span id="more-167"></span></p>
<p><strong>Il primo metodo</strong> è molto semplice: nominare le variabili in modo da renderle simili fra loro, rimuovere gli spazi e non andare a capo, come nell&#8217;esempio (non testato), che vi fa capire in linea di massima ciò che intendo:</p>
<p>[source:Php]<br />
&lt;?php<br />
$mysql_address=&#8221;localhost&#8221;;<br />
$mysql_username=&#8221;root&#8221;;<br />
$mysql_password=&#8221;";<br />
$mysql_database=&#8221;mio_database&#8221;;<br />
$mysql_connessione=mysql_connect($mysql_address,$mysql_username,$mysql_password);<br />
mysql_select_db($mysql_database,$mysql_connessione);<br />
$query=&#8221;SELECT * FROM $mysql_database.visite WHERE data=&#8217;19910429&#8242;&#8221;;<br />
$risultato=mysql_query($query, $mysql_connessione);<br />
$quanti=mysql_num_rows($risultato);<br />
echo &#8220;il 29 aprile 1991 sono venuti a trovarci $quanti visitatori!&#8221;;<br />
mysql_close($mysql_connessione);<br />
?&gt;<br />
[/source]<br />
Questo diventerà<br />
[source:Php]<br />
&lt;?php $mxazfhm=&#8221;localhost&#8221;;$mxgzfhm=&#8221;root&#8221;;$mxazfbm=&#8221;";$mxasfhm=&#8221;mio_database&#8221;;$mxazthm=mysql_connect($mxazfhm,$mxgzfhm,$mxazfbm);mysql_select_db($mxasfhm,$mxazthm);$mcazfhm=&#8221;SELECT * FROM $mxasfhm.visite WHERE data=&#8217;19910429&#8242;&#8221;;$mxzafhm=mysql_mcazfhm($mcazfhm, $mxazthm);$maczfhm=mysql_num_rows($mxzafhm);echo &#8220;il 29 aprile 1991 sono venuti a trovarci $maczfhm visitatori!&#8221;mysql_close($mxazthm);?&gt;<br />
[/source]</p>
<p>Esistono software come PHP Obfuscator (nell&#8217;immagine di questo articolo) che automatizzano il processo di sostituzione.</p>
<p>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&#8217;uso, cioè basilare. E&#8217; però vero che potremo utilizzare lo script senza dover installare alcun software aggiuntivo, e questo è davvero un bel vantaggio.</p>
<p>Non vi preoccupate se l&#8217;efficacia del metodo precedentemente descritto non vi soddisfa: esiste un <strong>secondo metodo</strong>: utilizzare software progettati per gestire la protezione (quella seria) del nostro codice (come Zend Guard).<br />
Come funzionano questi software? E&#8217; 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&#8217;output che verrà caricato all&#8217;interno della pagina. Il riconoscimento dei frammenti di codice avviene tramite la ricerca dei tags php (in genere &lt;?php; ?&gt;), dopo aver riconosciuto il codice esso viene trasformato in linguaggio macchina, ecco il problema: il codice PHP deve essere &#8220;puro&#8221;, ovvero non cifrato per essere comprensibile! I software che si occupano di cifrare e poi decifrare il codice (l&#8217;analisi ed il giudizio di questi saranno il tema di una serie di articoli che approfondiranno l&#8217;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 &#8220;puro&#8221;. Attenzione però: non tutti i servizi di hosting offrono la possibilità di utilizzare queste soluzioni.</p>
<p>Indice: <a href="#">Introduzione</a></p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://phpblog.it/2008/07/21/offuscare-o-proteggere-il-nostro-codice-php-introduzione/' addthis:title='Offuscare o proteggere il nostro codice PHP &#8211; Introduzione '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2008/07/21/offuscare-o-proteggere-il-nostro-codice-php-introduzione/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Lunghezza, volume e densità: questione di stile</title>
		<link>http://phpblog.it/2008/03/12/lunghezza-volume-densita-questione-di-stile-nella-programmazione-non-solo-php/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lunghezza-volume-densita-questione-di-stile-nella-programmazione-non-solo-php</link>
		<comments>http://phpblog.it/2008/03/12/lunghezza-volume-densita-questione-di-stile-nella-programmazione-non-solo-php/#comments</comments>
		<pubDate>Wed, 12 Mar 2008 06:00:18 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[dalla rete]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[best-practice]]></category>
		<category><![CDATA[codice]]></category>
		<category><![CDATA[densità]]></category>
		<category><![CDATA[lunghezza]]></category>
		<category><![CDATA[stile]]></category>
		<category><![CDATA[volume]]></category>

		<guid isPermaLink="false">http://php5blog.it/2008/03/12/lunghezza-volume-densita-questione-di-stile-nella-programmazione-non-solo-php/</guid>
		<description><![CDATA[Leggo dal blog di Paul M. Jones un&#8217;interessante spunto di riflessione sullo stile di programmazione, nel senso stretto del codice realizzato, in cui si parla dei parametri e delle metriche utili alla definizione dello stile in esame. Oltre alle sue idee aggiungo qualche appunto personale dettato dall&#8217;esperienza personale, attendo fiducioso anche i vostri commenti. Parlando [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://phpblog.it/2008/03/12/lunghezza-volume-densita-questione-di-stile-nella-programmazione-non-solo-php/' addthis:title='Lunghezza, volume e densità: questione di stile '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<p><a href="http://paul-m-jones.com/?p=276" title="Leggo dal blog di Paul M. Jones un'interessante spunto di riflessione sullo stile di programmazione">Leggo dal blog di Paul M. Jones un&#8217;interessante spunto di riflessione sullo stile di programmazione</a>, nel senso stretto del codice realizzato, in cui si parla dei parametri e delle metriche utili alla definizione dello stile in esame. Oltre alle sue idee aggiungo qualche appunto personale dettato dall&#8217;esperienza personale, attendo fiducioso anche i vostri commenti.</p>
<p><span id="more-62"></span> Parlando di stili di programmazione sono molte le idee su come andrebbero scritte le singole linee di codice. La prima è sicuramente quella che riguarda la lunghezza delle varie linee, non c&#8217;è solo questo ma molto altro. Gli sviluppatori dovrebbero dare attenzione al volume delle righe (proprio il numero) e la densità delle stesse (numero di operazioni).</p>
<p><strong>Lunghezza</strong><br />
Dal <a href="http://pear.php.net/manual/en/standards.php" title="PEAR style guide">PEAR style guide</a> apprendiamo che <strong>la lunghezza della singola linea di codice non deve eccedere i 75-85 caratteri</strong>. Questo limite non è dettato da problemi di wrapping errato o dimensioni dei monitor non sufficienti ad una giusta visualizzazione si tratta piuttosto di un limite cognitivo dell&#8217;individuo che si trova a leggere il codice.</p>
<p>Molto tempo fa alcuni studi sull&#8217;editoria sancirono che un lettore medio non potesse andare oltre alle 10-12 parole (5 caratteri) per riga senza avere problemi a comprendere il significato di ciò che ha letto nel contesto più ampio della totalità delle righe. Ora maggiorando questo limite di un 25-50% si arriva fino a 15 parole che a 5 caratteri l&#8217;una ci portano a 75 caratteri per riga.</p>
<p>Detto questo è chiaro che <strong>la lunghezza non è un parametro oggettivo</strong>, ogni programmatore ha i propri limiti quindi quello che io riesco a leggere e comprendere in una stringa di testo sarà sicuramente diverso dalla maggior parte degli altri programmatori.</p>
<p><strong>Volume e densità</strong><br />
Alcuni programmatori credono che si dovrebbe scrivere quanto più possibile in ogni singola riga per ridurne il numero complessivo. Facendo questo però riducono il volume a discapito della densità (complessità) della singola riga di codice. Andando ad aumentare la densità di una riga si aumenta in modo inversamente proporzionale la sua leggibilità, il codice è composto da molte azioni non si tratta di prosa&#8230;inoltre scrivendo troppe istruzioni nella stessa linea si perde di vista il flusso logico di ciò che si sta realizzando.</p>
<p><strong>E&#8217; quindi preferibile privilegiare la leggibilità con un po&#8217; di buon senso pensando al futuro</strong> e pensando a chi metterà mano al vostro codice. Infatti lavorando in questo modo tra un anno o più potrete lavorare sul vostro codice riuscendo a capire facilmente come funziona, lo stesso varrà per qualche altro programmatore.</p>
<p>Aumentare il volume delle righe e diminuirne la densità ha 3 benefici:</p>
<ol>
<li>maggiore leggibilità del codice</li>
<li>la maggiore leggibilità rende più semplice la comprensione del codice e del suo flusso</li>
<li>in acuni casi (vi rimando all&#8217;esempio originale) il codice guadagna in velocità di esecuzione</li>
</ol>
<p><strong>Compromesso</strong><br />
E&#8217; dunque lasciato al programmatore trovare il giusto compromesso tra volume e densità senza sbilanciarsi in situazioni estreme a favore di uno o dell&#8217;altro parametro. <strong>L&#8217;esperienza insegnerà sicuramente ad affinare la propria tecnica</strong> ed agire di conseguenza.</p>
<p>Personalmente ritengo molto importante lo stile di scrittura del codice includendo tra l&#8217;altro il corretto utilizzo dell&#8217;indentazione e l&#8217;inserimento dei commenti (sensati) per rendere il codice semplice da comprendere a distanza di tempo. Lavorare dopo alcuni giorni su del codice è un conto, farlo anche solo dopo alcuni mesi può diventare un&#8217;impresa ardua se il codice non è scritto in modo rispettoso si queste semplice regole.</p>
<p>E voi come agite, cosa ne pensate di queste regole che potremmo definire &#8220;best-practice&#8221;?</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://phpblog.it/2008/03/12/lunghezza-volume-densita-questione-di-stile-nella-programmazione-non-solo-php/' addthis:title='Lunghezza, volume e densità: questione di stile '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2008/03/12/lunghezza-volume-densita-questione-di-stile-nella-programmazione-non-solo-php/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

