PHP in sicurezza, tips

php_security_garanet
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 !




PHP in sicurezza, tips ultima modifica: 2016-10-08T08:56:28+00:00 da Gabriele Gatto