Password utente MySQL in PHP

4

Come impedisco di esporre i nomi utente e le password di MySQL nel codice PHP quando si stabilisce una connessione?

    
posta Fabian Grunge 16.01.2016 - 15:17
fonte

3 risposte

1

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.

    
risposta data 16.01.2016 - 22:08
fonte
1

Hanky 웃 Panky porta buoni punti. Tuttavia, mi piacerebbe aggiungerli:

  1. È possibile attenuare i danni limitando la connessione degli account in base ai ruoli. Supponiamo che tu consenta solo la ricerca sul tuo sito web. Permettendo solo dichiarazioni 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.
  2. Puoi anche negare a chiunque, ad eccezione di quelli con accesso amministrativo appropriato al sito web, il cui accesso sarà probabilmente indipendente dal webhost. IP-based nega tutto, consentire, ad esempio. Nota che questo non ti proteggerà completamente se sei stato violato, né ti proteggerà se il tuo host web è quello che accede al database.

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.

    
risposta data 16.01.2016 - 16:40
fonte
0

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.

    
risposta data 16.01.2016 - 22:55
fonte

Leggi altre domande sui tag