Prendi in considerazione l'installazione su open_basedir
base "per sito". open_basedir
è un'impostazione php.ini che impedisce agli script di accedere ai file al di fuori di una lista bianca definita. Se il tuo server ospita più siti, impedirà a un sito di leggere le impostazioni del database da un altro sito. Impedirà inoltre a uno script php di accedere / modificare i file di sistema di base. Open basedir è facile da configurare, basta aggiungere la linea " php_admin_value open_basedir /my/list/of/folders:/as/a/colon/seperated/list
" a ciascun vhost Apache.
Considera anche di disattivare il motore di script PHP per tutti i siti / cartelle che non devono contenere script PHP (ad esempio una cartella di immagini caricata). Ancora una volta, questo è semplice, aggiungi "php_admin_value engine off" a qualsiasi Apache VirtualHosts che non necessita di php. Per disabilitare PHP in una directory, inserisci la stessa cosa in un tag Directory.
Esegui i permessi dei file il più stretto possibile, evita l'accesso in scrittura agli script PHP per l'utente Apache, questo impedisce a uno script in esecuzione di modificare se stesso o altri script sullo stesso sito / server. Evitare le autorizzazioni 777 se possibile, capire le autorizzazioni minime necessarie per eseguire l'applicazione e utilizzarle.
Se stai ospitando più siti, ognuno con il proprio database, utilizza un utente MySQL / Postgres separato per ciascuno e imposta le autorizzazioni su ciascun utente in modo tale che abbiano accesso solo ai database pertinenti. Ancora una volta ciò impedirà a uno script non autorizzato di manomettere il database di un'altra applicazione.
Anche Suosin, HardenedPHP, mod_security e simili sono tutti preziosi, ma li usano in aggiunta a una configurazione strettamente bloccata, non al posto di.