Dipende molto da cosa è il tuo modello di minaccia.
Se togliamo tutto il resto e pensiamo solo all'applicazione, non c'è praticamente nulla che tu possa fare per migliorare davvero la sicurezza dell'app. Stai lontano da soluzioni esoteriche e concentrati su ciò che è più manutenibile e pulito. Voglio sottolineare la pulizia, poiché di solito il disastro della sicurezza deriva da situazioni disordinate.
In ogni caso: se l'utente malintenzionato ottiene l'esecuzione di codice in modalità remota sotto l'utente dell'applicazione, non è possibile limitare l'accesso alla configurazione in alcun modo: l'app deve accedervi, così anche l'autore dell'attacco. Se ottiene le capacità di lettura dei file, quindi l'archiviazione in un database ti proteggerà dalla divulgazione - anche se devi archiviare le credenziali del db in un file, l'hacker non sperabilmente sarà in grado di sfruttarle. Se ottiene l'iniezione SQL, l'accesso al db (nel caso improbabile che ciò non si traduca in exec del codice remoto), quindi averli in un file è più sicuro. In realtà, dipende da come è progettata la tua applicazione.
L'esecuzione di Apache come root è davvero una cattiva idea (beh, disabilitando il drop dei privilegi intendo). Invece di implementare soluzioni una tantum si concentrano su cose che rimarranno sul posto senza più hack e ottenere i benefici del pentest. passare cose attraverso lo stdin, ad esempio, renderà molto difficile per i tester recuperare le credenziali, ma a lungo termine probabilmente finirai con uno script bash che fa il lavoro ... che è di gran lunga peggiore delle altre soluzioni .