2012-12-20 15 views
5

Eventuali duplicati:
Putting core classes above the web root - good or bad idea?Perché mettere le credenziali di MySQL al di fuori della directory www?

Continuo a leggere che si tratta di una pratica migliore per mettere le credenziali di connessione MySQL (che si tratti di una classe, definisce, ecc ..) al di fuori della web root (sopra la cartella www).

Perché è questo? Se le credenziali sono in un file .php, non importa se il file è accessibile attraverso il browser, giusto?

+3

Fino al momento in cui il server Web non è configurato correttamente e serve accidentalmente il codice sorgente PHP piuttosto che interpretarlo. –

risposta

8

È una misura preventiva. Se qualcuno accidentalmente disabilita la valutazione php nel tuo server Apache o modifica un'impostazione apache in un file .htaccess, il file potrebbe essere pubblicato come qualsiasi file di testo normale. Oppure, se dimentichi accidentalmente un tag php start, sarebbe rosso come un testo normale. Non che tu possa commettere un errore così stupido, ma forse un futuro novizio che lavora sul tuo codice potrebbe commettere un errore.

Perché lasciare un possibile vettore aperto quando è possibile impedire che sia mai possibile? Prendi solo il consiglio degli altri che hanno sparato ai loro piedi (o come me, hanno sparato entrambi i piedi e una mano) e spostato le credenziali al di fuori della tua docroot.

5

Perché, in una certa misura, nulla sotto la radice Web è sicuro. È disponibile su Internet, che lo rende intrinsecamente insicuro.

Esiste sempre la possibilità che un server configurato in modo errato possa un giorno emettere il contenuto di qualsiasi file PHP, anziché inviarlo a PHP per essere interpretato. Ci sono anche troppe persone là fuori che cercano di entrare nel tuo database in qualsiasi modo possano ... alcune solo per divertimento.

In qualsiasi situazione, è necessario utilizzare sempre i metodi più sicuri disponibili. È una buona abitudine entrare.

Inoltre, si dovrebbe mai utilizzare la password di root nella propria applicazione web. Crea un utente speciale con privilegi minimi.

Per PHP ho sempre usare un file .ini per memorizzare le configurazioni sensibili ...

<?php 
    $config = parse_ini_file('../config.ini'); 
?> 
+2

elaborato per favore. –

+1

Usi un file ini per preferenze personali o c'è un motivo specifico? –

+0

I file .ini vengono caricati da PHP all'avvio e le informazioni vengono conservate per tutta la durata del processo. Inoltre, è una preferenza personale. Dato che i file .ini sono nativi di PHP (si pensi a JavaScript e JSON) hanno solo senso per le opzioni di configurazione. –

2

Perché quello che c'è dentro www directory (cioè la radice del tuo sito web) può essere potenzialmente accessibile da Internet.

Ciò significa che se si inseriscono le credenziali qui, forse qualcuno sarà in grado di accedervi e di connettersi direttamente al DB.

Inserire le credenziali al di fuori di questa directory garantisce che non sarà accessibile in questo modo.