È sicuro centralizzare le informazioni del database?

4

Vorrei sapere se è sicuro centralizzare le informazioni del database in un file come questo:

db_infos.php :

$server = "localhost";
$user = "root";
$password = "1234";
$database = "foo";
$table = "bar";

E poi, includi questo file quando ho bisogno di:

include("db_infos.php');
mysql_connect($server, $user, $password);
...

C'è un modo per ottenere le informazioni del database, altrimenti ci sono altri modi più sicuri o più rilevanti (entrambi sono accettati; p)?

Se non è sicuro per favore dimmi perché, e come sarà:)

    
posta torr 05.06.2012 - 07:04
fonte

3 risposte

6

Direi che è sicuro quanto la directory in cui è collocato.

Il luogo ideale in cui archiviare il file di connessione al database si trova al di fuori della web root. In questo modo, un utente malintenzionato non sarebbe in grado di accedere al file utilizzando gli attacchi directory traversal.

Ulteriori informazioni sull'indirizzamento tra directory: link

Questa pagina ha anche ulteriori informazioni sull'argomento: link

    
risposta data 05.06.2012 - 07:06
fonte
2

In primo luogo, vivi secondo la regola dei privilegi minimi. A meno che tu non abbia esplicitamente bisogno di scrivere sul database su una determinata pagina, usa un utente di sola lettura.

In genere cerco di non codificare mai le credenziali nel codice sorgente. Sembrava sempre sbagliato (anche su un linguaggio lato server). Piuttosto, li metto in un file di configurazione di sola lettura limitato che è al di fuori della directory radice. Credo che tu possa memorizzare i dettagli della connessione all'interno del tuo httpd.conf o file di host virtuali (se il tuo host ti concede l'accesso), in questo modo puoi chiamare mysql_connect senza parametri, che verranno automaticamente letti dalla configurazione.

Infine, configura il tuo server in modo che accetti solo le connessioni dal server e dall'utente locale e blocchi tutto il resto. Non visualizzare le credenziali sulle uscite di errore. Meglio ancora, disabilita tutti gli errori insieme e prova le modifiche localmente prima di renderle attive. MySQL ha la tendenza a sputare informazioni preziose

    
risposta data 05.06.2012 - 08:42
fonte
1

Sì, è possibile centralizzare le informazioni sulla connessione e le credenziali per il database in un singolo file di configurazione .

Tuttavia, non memorizza quel file nella tua web root . Assicurati di conservarlo altrove al di fuori della web root. Ci sono due ragioni per questo. Innanzitutto, se non stai attento, qualcuno potrebbe essere in grado di accedere a quel file tramite il browser e quindi apprende tutto ciò che è necessario per connettersi al tuo database. In secondo luogo, se non stai attento, il tuo editor potrebbe salvare copie di backup del file, causandone nuovamente l'esposizione al mondo (vedi qui per maggiori dettagli).

Inoltre, non controlla questo file nel sistema di controllo della versione del codice sorgente . Non vuoi che le tue password e le tue chiavi crittografiche siano esposte in quel sistema di controllo delle versioni, con copie conservate per sempre e sottoposte a backup in modo persistente.

Per ulteriori informazioni, vedere le seguenti domande su questo sito: È un modo sicuro per dichiarare i parametri DB in htaccess piuttosto che in un file PHP? , dove memorizzare una chiave per la crittografia , Un sito Web di origine chiuso dovrebbe conservare una chiave segreta nella sua fonte? e In che modo i progetti open source gestiscono artefatti sicuri? .

    
risposta data 07.06.2012 - 20:55
fonte

Leggi altre domande sui tag