Bloccare l'esecuzione di PHP nelle directory scrivibili

Come impedire l'esecuzione di PHP nelle cartelle vulnerabili del tuo sito.

Uno dei metodi più comuni con cui un sito viene compromesso sono le shell PHP — script malevoli che un attaccante carica sul server e usa per modificare file, leggere dati di configurazione o ottenere accesso diretto al database.

Il punto chiave è che le shell possono essere caricate solo nelle directory scrivibili. Quindi, se una cartella non ha bisogno di eseguire PHP — e la maggior parte delle cartelle di upload e dei file multimediali non ne ha bisogno — dovresti disabilitarlo esplicitamente. I candidati principali sono directory come /images/, /uploads/, /templates/ e qualsiasi altra in cui finiscono i contenuti caricati dagli utenti.

Metodo 1 — Server CGI, FastCGI, suPHP o DSO (Apache)

Crea un file .htaccess nella directory in cui vuoi bloccare l'esecuzione PHP. Se esiste già, aggiungi il codice seguente all'inizio del file:

<FilesMatch "\.([Pp][Hh][Pp]|[Cc][Gg][Ii]|[Pp][Ll]|[Ph][Hh][Tt][Mm][Ll])\.?.*">
Order allow,deny
Deny from all
</FilesMatch>

Questo blocca l'accesso HTTP diretto a qualsiasi file PHP (e CGI/Perl/PHTML) presente in quella directory. Anche se una shell viene caricata, non potrà essere eseguita dal browser.

I nostri prodotti e servizi

Hosting WebServizi di hosting affidabili per siti web di qualsiasi dimensione.
Ordina
VPSInfrastruttura cloud flessibile con accesso root completo.
Ordina
Server DedicatiServer dedicati per le massime prestazioni.
Ordina

Metodo 2 — Server mod_PHP (DSO — Apache PHP)

Se il tuo server è in modalità mod_PHP e consente le direttive php_flag e php_value nel .htaccess, questa singola riga è tutto ciò di cui hai bisogno:

php_flag engine off

Inseriscila in un file .htaccess nella cartella che vuoi proteggere. Questo disabilita completamente l'interprete PHP per quella directory e tutte le sottodirectory al suo interno. Qualsiasi file PHP caricato in quell'albero diventa inerte — il server semplicemente non lo eseguirà.

Aiuto

Hai domande o ti serve una mano? Scrivici tramite il sistema di ticket — siamo sempre qui per aiutarti!

Hai bisogno di aiuto?I nostri ingegneri ti aiuteranno gratuitamente con qualsiasi domanda in pochi minutiContattaci