Come connettersi in sicurezza a un database con PHP?

4

Attualmente in PHP (nel file /var/www/website.com/public_html/functions.php ). Mi sto connettendo al database in questo modo:

function connect(){
    $config = parse_ini_file('/var/www/website.com/db.ini');
    $con = mysqli_connect("localhost",$config['username'],$config['password'],$config['db']);
    if(!$con){
        die("Failed to connect to Database"); 
    }
    return $con;
}

Dove /var/www/website.com/db.ini è

username=user123
password=pass123
db=mydb

con autorizzazioni:

-rw-r--r-- 1 root root 84 /var/www/website.com/db.ini

Il PHP verrà eseguito da www-data o root .

La radice di website.com è /var/www/website.com/public_html/ .

È questo il modo migliore per connettersi a un database usando PHP da un punto di vista della sicurezza? Sto anche rendendo questo codice open source.

    
posta maxisme 28.02.2017 - 15:20
fonte

1 risposta

3

Il tuo approccio sembra buono.

  • Si stanno memorizzando le credenziali in un file di configurazione separato invece di averle scritte in linea nel codice sorgente. Questo lo rende sicuro quando si condivide il codice con gli altri e protegge le credenziali in caso di errata configurazione del codice PHP (cosa abbastanza frequente).

  • Il file di configurazione è esterno alla radice del documento pubblico, quindi non può essere direttamente accessibile da un utente dell'applicazione Web, a meno che non vi sia un'altra vulnerabilità (ad es. un difetto di attraversamento della directory).

  • In ogni caso, si dovrebbe evitare di eseguire il server come root . Altrimenti il modello di autorizzazione è inutile, poiché root può leggere e scrivere su qualsiasi file.

Nota che non devi occuparti di analizzare le credenziali nel tuo codice - puoi invece specificarle come Impostazioni di runtime di PHP nella configurazione del server, come spiegato qui .

Vedi anche:

risposta data 28.02.2017 - 15:57
fonte

Leggi altre domande sui tag