PHP in sicurezza, tips
Basato su tools per PHP che possono affrontare i diversi tipi di attacchi.
Comuni tipi di attacchi PHP.
XSS – tipo Cross-site scripting è una vulnerabilità in applicazioni web php, quali gli aggressori possono sfruttare per rubare le informazioni degli utenti. È possibile configurare Apache e PHP script più sicuro (convalidare tutto l’input utente) per evitare attacchi xss.
SQL injection – è una vulnerabilità a livello di database di un’applicazione php. Quando l’input dell’utente in modo non corretto viene filtrato, qualsiasi istruzione SQL puó essere eseguita dall’applicazione. È possibile configurare Apache e scrivere del codice sicuro per evitare attacchi SQL injection. Una pratica comune in PHP è quello di evitare i parametri utilizzando la funzione chiamata mysql_real_escape_string () prima di inviare la query SQL.
Upload di files – consente al visitatore di inserire file (carica file) sul server. Questo può risultare vari problemi di sicurezza quali l’eliminazione dei files, eliminare database, ottenere dettagli utente e molto altro ancora. È possibile disabilitare il caricamento di file utilizzando php o scrivere del codice sicuro (come la convalida dell’input dell’utente e consentire solo il tipo di file di immagine come png o gif).
Inclusione di file locali e remoti – un utente malintenzionato può aprire un file da un server remoto ed eseguire qualsiasi codice PHP. Questo permette di caricare files, eliminare files e installare backdoor. È possibile configurare php per disabilitare l’esecuzione del file remoto.
EVAL() – valutazione di una stringa come codice PHP. Questo è spesso utilizzato da un utente malintenzionato per nascondere il loro codice e strumenti sul server stesso. È possibile configurare php per disabilitare Eval().
Sea-surf Attack (contraffazione di Cross-site richiesta – CSRF) – questo attacco impone all’utente di eseguire azioni indesiderate su un’applicazione web in cui si è attualmente autenticato. Un successo di un exploit CSRF puó compromettere i dati utente finale e il funzionamento in caso di utente normale. Se l’utente finale mirato è l’account di amministratore, ciò può compromettere l’intera applicazione web.
Segui i seguenti consigli per limitare i rischi del tuo server PHP.
Limitare la visualizzazione di informazioni del server PHP, disabilitando la direttiva expose_php nel file di configurazione php.ini.
#:~$ sudo vi /etc/php.ini
expose_php = off
Ridurre al minimo i moduli caricabili di PHP, è possibile disabilitare i moduli che non sono necessari, rinominare o spostare i moduli all’interno della directory /etc/php.d/.
Disabilitare un modulo
#:~$ cd /etc/php.d/
#:~$ sudo mv gd.ini gd.disable
#:~$ sudo service apache2 restart
Abilitare un modulo
#:~$ cd /etc/php.d/
#:~$ sudo mv gd.disable gd.ini
#:~$ sudo service apache2 restart
Logs tutti gli errori del PHP
Non esporre i messaggi di errore PHP a tutti i visitatori del sito. Modificare /etc/php.d/security.ini e impostare la seguente direttiva:
display_errors=Off
log_errors=On
error_log=/var/log/apache2/php_scripts_error.log
Disativa l’esecuzione remota di codice o limita la dimensione.
Modifica /etc/php.d/security.ini e impostare la seguente direttiva che disabilita il caricamento di files per motivi di sicurezza:
file_uploads=Off
Se gli utenti dell’applicazione necessitano di caricare files, attivare questa funzionalità impostando i limiti e la dimensione massima dei files che PHP accetterà attraverso upload:
file_uploads=On
# l'utente puó solo caricare file di 1MB via php
upload_max_filesize=1M
Disattiva l’esecuzione remota di codice
Se abilitato l’ allow_url_fopen consente PHP funzioni quali file_get_contents() e l’inclusione del file per richiedere istruzioni..–può recuperare dati da postazioni remote, come un server FTP o sito web. Modificare /etc/php.d/security.ini e impostare la seguente direttiva:
allow_url_fopen=Off
allow_url_include=Off
Attiva SQL Safe Mode
Modifica il file /etc/php.d/security.ini configurando questa direttiva:
sql.safe_mode=On
Controlla dimensione del POST
Modifica il file /etc/php.d/security.ini configurando questa direttiva:
; Set un valore reale qui
post_max_size=1K
Controllo risorse DoS
Modifica il file /etc/php.d/security.ini configurando questa direttiva:
# set in seconds
max_execution_time = 30
max_input_time = 30
memory_limit = 40M
Disattivazione funzioni PHP pericolose se non servono.
Modifica il file /etc/php.d/security.ini configurando questa direttiva:
disable_functions =exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
Limita il PHP Access al File System
Modifica il file /etc/php.d/security.ini configurando questa direttiva:
; Limits the PHP process from accessing files outside
; of specifically designated directories such as /var/www/html/
open_basedir="/var/www/html/"
; ------------------------------------
; Multiple dirs example
; open_basedir="/home/httpd/vhost/cyberciti.biz/html/:/home/httpd/vhost/nixcraft.com/html/:/home/httpd/vhost/theos.in/html/"
; ------------------------------------
Riavvia Apache per applicare i cambiamenti.
#:~$ sudo service apache2 restart
Adesso il Server PHP, risulta sicuro !

Follow us
We will keep you updated
Share this