L'archiviazione delle variabili di configurazione in un file XML su un sito PHP nella radice del sito è troppo rischiosa?

StackOverflow https://stackoverflow.com/questions/605308

  •  03-07-2019
  •  | 
  •  

Domanda

Ho notato che Magento memorizza i dettagli della connessione MySQL in un file XML che non è protetto sopra il docroot. Questo sembra .... ben pericoloso.

XML sembra un modo pratico per archiviare i dati di configurazione, tranne una cosa, digitando http://www.domain.com.au/library/config.xml mostrerà al mondo i tuoi dettagli privati!

Sono andato avanti e ho usato un file XMl e l'ho aggiunto al mio file .htaccess.

<Files ~ "\.xml<*>quot;> // regex files that end with xml extension
Order allow,deny 
Deny from all // don't show them
</Files>

Ora ero contento di questo, ora non ne sono troppo sicuro. Che cosa succede se il file .htaccess viene accidentalmente cancellato / danneggiato (ciò accade oltre all'errore umano) e cosa succede se un giorno voglio posizionare l'app su un server non Apache ... ogni server ha l'equivalente per bloccare i file XML, e in tal caso, possono essere modificati a livello di cartella come il file .htaccess (e non solo un file httpd.conf).

La mia domanda è ... la convenienza di XML (facile da aggiornare, i progettisti che hanno bisogno di armeggiare non si sentiranno così intimiditi) supera i potenziali problemi (esporre i dati privati)?

È stato utile?

Soluzione

Conserverei personalmente solo le informazioni sui file di configurazione in un formato che non è in un formato o posizione direttamente accessibili. Quindi userei il formato XML sopra il docroot o userei il formato $ config ['varname'] = 'value' di PHP. Il metodo successivo visualizzerebbe semplicemente una pagina bianca vuota se chiamato direttamente (purché sia ??tutto PHP e non contenga HTML e non echi).

Gallery, vBulletin e Joomla usano tutti il ??secondo metodo che ho citato. So di aver già menzionato quei progetti in altre domande relative a PHP, ma sembra essere un metodo ampiamente utilizzato e accettato tra i progetti.

Altri suggerimenti

Risposta breve, no non lo è. Ma una domanda migliore sarebbe. Se non è memorizzato in un file di configurazione dove lo manterresti?

Sono pienamente d'accordo con inventix su questo, ma offro anche una terza opzione che dovrebbe essere combinata con entrambi

nomina il file che memorizza le informazioni di configurazione

.htanything.whatever

come server a livello di tutti i file che iniziano .ht sono illeggibili da utenti esterni {ecco perché htaccess è sempre .htaccess}

personalmente memorizzo solo i file di configurazione e le librerie di funzioni al di fuori della radice del documento, ma capisco che alcuni connot usano quindi sempre la convenzione .htnaming su di essi anche nel caso in cui la cartella include include debba essere spostata nell'albero del documento da qualcuno che usa il software su tale server

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top