PHP  »  Articoli  »  Sicurezza di Php 

Scrivere applicazioni PHP sicure

di: Gabriele Farina     07 Settembre 2006

L'OWASP (Open Web Application Security Project) da alcune settimane ha pubblicato un interessante articolo in cui vengono indicate le cinque maggiori pecche a livello di sicurezza in PHP. OWASP, di cui ci siamo già occupati in un articolo della sezione sicurezza, è un progetto che punta a creare una serie di strumenti e documenti che facilitino la scrittura di applicazioni web sicure. Per quanto riguarda il linguaggio PHP sono stati analizzati tutti i problemi riportati nella nota mailing list dedicata alla sicurezza Bugtraq ed è stata stilata una classifica dei cinque maggiori problemi di sicurezza. In questo articolo le passeremo in analisi e vedremo come evitare queste falle nelle nostre applicazioni web. Per una visione più completa rimandiamo anche alla Guida sicurezza di PHP pubblicata nella sezione PHP del nostro network.

Preliminari: le direttive e la versione di PHP

L'articolo inizia con una breve introduzione che puntualizza due concetti fondamentali riguardo PHP: l'utilizzo di safe_mode per aumentare la sicurezza di PHP e l'utilizzo di addslashes e magic_quotes. Per quanto riguarda safe_mode (che è una direttiva che può essere impostata dal file php.ini) è bene ricordare che il suo semplice utilizzo senza nessun altro accorgimento non rende minimamente sicuro il nostro sistema. La maggior parte delle restrizioni che vengono impostate abilitando il safe_mode possono essere aggirate utilizzando script sviluppati in modo intelligente; per esempio molti software commerciali o di pubblico utilizzo hanno utilizzato hack appositi per aggirare delle protezioni della direttiva di configurazione safe_mode che avrebbero limitato il funzionamento dell'applicazione. Per quanto riguarda gli hoster dovrebbe essere fatta un po' più di attenzione allo studio del codice caricato sui server piuttosto che sperare che, abilitando safe_mode, tutto sia sicuro e ben funzionante. A parte tutto questo è bene precisare che safe_mode non è del tutto inutile: se ben strutturato ed integrato con l'applicazione può aumentare il grado di sicurezza del sistema.

Il secondo punto è legato all'utilizzo delle funzioni addslashes e le funzioni/direttive magic_quotes_*. Purtroppo, nonché sia consigliato ovunque l'utilizzo della funzione addslashes, questa non previene da una delle cause maggiori degli attacchi alle applicazioni PHP: l'SQL Injection. Per prevenirle è essenziale non utilizzare addslashes, disabilitare la direttiva magic_quotes_gpc in tutte le installazioni ed appoggiarsi a qualche libreria nativa o esterna che abbia il supporto per accessi più sicuri al database. Viene fatto riferimento alla libreria PDO, che viene fornita di default da PHP 5.1 in avanti, ma è da specificare che attualmente non è per nulla stabile; in PHP 5.2 dovrebbero risolvere tutti questi problemi.

Molto importante è il riferimento che viene fatto alla versione di PHP da installare: per prevenire la maggior parte dei problemi e dei rischi di sicurezza (in seguito spiegheremo in modo più dettagliato questa affermazione) è necessario installare PHP 5.1 o superiori. Sfortunatamente gli hoster che supportano questa versione si contano sulla punta delle dita dato che molti preferiscono rimanere attaccati alla versione 4 per problemi di incompatibilità che in realtà si trasformano in problemi di sicurezza: se un software non è compatibile con PHP 5.1 allora vuol dire che ha grossi problemi di sicurezza che comunque andrebbero corretti.

PHP 4 non è sicuro, sia per via delle impostazioni standard del file php.ini sia per il fatto che non supporta PDO ed altre interfacce di accesso alle risorse molto sicure. Oltretutto il problema dell'incompatibilità si riduce del tutto quando ci si rende conto che tutte le applicazioni commerciali o molto importanti funzionano senza alcun problema su PHP 5, ed alcune di queste (come MediaWIKI) richiedono PHP 5 per poter funzionare. Ormai sono anni che viene utilizzato. Sarebbe ora di aggiornarsi.

Passiamo ora ad analizzare i cinque maggiori rischi di sicurezza.

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