it-swarm.dev

È sicuro archiviare la password del database in un PHP?

Il mio file connection.php Memorizza le credenziali per connettersi al database:

<?php 
    $objConnect = mysql_connect("localhost","username","password"); 
    mysql_select_db("selectDB", $objConnect);
?>

Quando una pagina deve collegare il database, utilizzo semplicemente <?php include("connection.php"); ?>.

È sicuro? Gli hacker possono rubare le mie credenziali da quel file?

32
OammieR

Il mio consiglio: Non archiviare le password nel codice sorgente.

Invece, memorizzali in un file di configurazione (al di fuori del Web root) e assicurati che il file di configurazione non sia accessibile pubblicamente. Il motivo è che normalmente non si desidera mantenere le password controllate nel repository del codice sorgente o esposte a tutti coloro che possono visualizzare i file nella propria radice web.

Esiste un ulteriore rischio con l'archiviazione delle password in un .php all'interno del tuo webroot, che è un po 'oscuro ma può essere facilmente evitato posizionando il file al di fuori del tuo root web. Considera: se stai modificando connection.php utilizzando un editor di testo e la connessione si interrompe durante la modifica, il tuo editor salverà automaticamente una copia del connection.php file in alcuni file di backup: ad es. connection.php~ (nella stessa directory). Ora il file di backup ha un'estensione diversa, quindi se qualcuno prova a recuperare quel file, il server Apache servirà felicemente una copia del file in testo normale, rivelando la password del database. Vedere l'1% dei siti basati su CMS espone le password del database per i dettagli.

Vedi anche In che modo i progetti open source gestiscono artefatti sicuri? , Open Source e come funziona per progetti sicuri?

35
D.W.

È ragionevolmente sicuro. Per ottenere il contenuto del file php, un hacker deve compromettere il tuo server o devi configurarlo in modo errato.

Consiglio comunque di configurare mysql in modo che l'utente utilizzato dallo script non sia accessibile da remoto e di utilizzare un altro utente per l'accesso remoto amministrativo.

11
CodesInChaos

Il problema si presenta se hai uno PHP che probabilmente scarica i file sul tuo server, ad esempio download.php?=index.php.

Se controlli Google, vedrai che questa vulnerabilità esiste in molti altri siti.

5
Victor Casé