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