Category Archives: Sicurezza

Rendere sicuro PHP sul proprio server

Le applicazioni e i cms basati su PHP sono molto diffusi, è quindi molto probabile che sul vostro server sia necessaria la presenza di PHP.

Risulta quindi importante configurare PHP in modo da rendere sicura l’esecuzione degli script.

Disabilitare allow_url_fopen
L’opzione allow_url_fopen permette di accettare URL come parametri file di alcune funzioni e quindi offre la possibilità agli sviluppatori di accedere a risorse come indirizzi http.
Questo rappresenta un rischio per la sicurezza se non sono presenti abbastanza controlli sui nomi dei file accettati e viene utilizzato spesso per l’esecuzione di codice remoto sul server.

Per disabilitare l’opzione è necessare utilizzare la seguente impostazione nel file php.ini
allow_url_fopen = Off

Disabilitare Register Globals
La direttiva register_globals permette agli script PHP di creare variabili globali in base ai dati ricevuti attraverso l’url, moduli, cookies e sessione.
La funzionalià è stata disabilitata a partire da PHP 4.2.0 visto che in diversi casi permetteva la manipolazioni delle variabili globali da remoto e non deve essere abilitata.
Se uno script PHP ha bisogno di questa direttiva abilitata significa che non è uno script sicuro.
register_globals = Off

Limitare le directory a cui gli script PHP posono accedere
Gli script PHP hanno necessità di accedere in lettura e scrittura a directory presenti sul server.
Le directory a cui hanno necessità di accedere sono però limitate, utilizzando la direttiva open_basedir è possibile indicare in modo specifico le directory a cui gli script php possono accedere.

open_basedir = /var/www/html

Disabilitare le funzioni pericolose
L’opzione disable_functions presente nel file php.ini permette di disabilitare funzioni di Php potenzialmente pericolose.

Per disabilitare le funzioni basta elencarle in questa direttiva, bisogna ovviamente valutare quali sono quelle di cui gli script in esecuzione hanno bisogno e quelle che possono essere disabilitate.

disable_functions = apache_get_modules,apache_get_version,apache_getenv,apache_note,apache_setenv,disk_free_space,diskfreespace,dl,highlight_file,ini_alter,ini_restore,openlog,passthru,phpinfo,proc_nice,shell_exec,show_source,symlink,system

Impostare dei limiti
Il file php.ini permette di impostare dei limiti relativi all’utilizzo della memoria, alla dimensioni dei file caricati e al tempo di esecuzione.
Risulta quindi importante configurare queste impostazioni a seconda delle proprie necessità, cercando di limitare l’utilizo di risorse.

max_execution_time = 30
max_input_time = 60
memory_limit = 16M
upload_max_filesize = 2M
post_max_size = 8M

Errori e messaggi di log
Spesso i messaggi di errore di php vengono visualizzati all’interno del browser dall’utente.
Questo tipo di impostazione è adatta in fase di sviluppo, su server di produzione è però necessario nascondere i messaggi di errore visto che possono rivelare diverse informazioni importanti e inviarli in un file di log.

display_errors = Off
log_errors = On

Queste sono alcune delle impostazioni di sicurezza relative a PHP.

Ovviamente la sicurezza dipende spesso dal codice delle applicazioni, su questo sito ci occupiamo però dell’amministrazione dei server e quindi cerchiamo di analizzare come possiamo aumentare la sicurezza modificando le opzioni di configurazione.