Come impedisco di esporre i nomi utente e le password di MySQL nel codice PHP quando si stabilisce una connessione?
Come impedisco di esporre i nomi utente e le password di MySQL nel codice PHP quando si stabilisce una connessione?
Non è mai una buona idea memorizzare le password nel codice sorgente. Il codice sorgente ha l'orribile tendenza a diventare pubblico. Questo può accadere con un'esposizione nel tuo sistema di controllo delle versioni (google aws key github
per leggere alcune storie dell'orrore), condividi il codice sorgente con qualcuno, ma nella tua configurazione PHP serve il tuo codice sorgente, ecc ...
Inoltre, dovresti essere in grado di cambiare la tua password su una pianificazione indipendente dagli aggiornamenti del codice sorgente. Qualcosa che li memorizza nello stesso file impedisce.
Invece, inserisci la password in un file di configurazione. Questo file deve trovarsi al di fuori della web root per ridurre la probabilità che venga pubblicato in modo errato per l'utente. Proteggilo con i permessi OS appropriati. Puoi passare la password al tuo PHP tramite una variabile di ambiente.
Hanky 웃 Panky porta buoni punti. Tuttavia, mi piacerebbe aggiungerli:
SELECT
per quel particolare account impedirà l'esecuzione di qualsiasi altra cosa. Questo non funziona se hai un account per ogni: SELECT
, UPDATE
, INSERT
, DELETE
, come un utente malintenzionato potrebbe combinare i privilegi e causare gravi danni. Solo quelli con accesso root / admin / shell al tuo sito web possono ottenere il nome utente e le password, a meno che tu non abbia smascherato i file in modo non corretto. Se qualcuno di questi è vero, hai problemi molto più grandi di quelli che hanno il tuo utente MySQL / pass noto.
La risposta tipica è: memorizzarli nei file di configurazione perché i file di codice vengono spesso pubblicati. Una nuova tendenza sembra essere quella di archiviarlo in variabili d'ambiente, se è possibile controllarle all'avvio del server. Nell'hosting condiviso questo non è il caso, e quindi i file di configurazione sono una buona opzione. Dopo tutto, una volta che qualcuno arriva al tuo filesystem, potrebbe anche cambiare il tuo codice sorgente e quindi fare comunque qualsiasi cosa.