Sembra che in questi giorni la prassi generale sia quella di archiviare segreti (ad es., DB, credenziali API) in un file .ENV
, quindi caricarlo automaticamente in $_ENV
e $_SERVER
. Questa libreria popolare lo fa ed è anche incoraggiato come best practice. Questa libreria fa un ulteriore passo avanti e crittografa il valore all'interno del file .ENV
.
Dicono che l'intero scopo è di gestire facilmente le configurazioni di sviluppo / produzione e di ridurre al minimo i file di configurazione inviati al controllo della versione. In cima a "mai memorizzare credenziali sensibili nel codice".
Un chiaro problema a riguardo è una semplice iniezione di print_r($_SERVER)
o print_r($_ENV)
nel tuo codice rivelerà tutto. Oppure, se hai dimenticato di eliminare phpinfo.php
, tutto è perduto! Ci sono anche altri modi in cui potrebbe perdere (ad es. Log).
Sono abbastanza sconcertato che questa pratica sia prevalente o forse mi manchi solo qualcosa.
C'è qualcosa di particolarmente sbagliato con il buon vecchio config.php
archiviato al di fuori del root del documento? Voglio dire che potresti metterlo in discussione anche tu e non farà assolutamente parte del tuo codice. Puoi anche crittografarlo. Perché utilizzare .ENV
?
Aggiornamento:
Ecco un articolo che accetta i miei sentimenti