2012-04-16 14 views
13

Eventuali duplicati:
How to secure database passwords in PHP?dove mettere il database di informazioni sensibili

Recentemente mi è stato dato un progetto di sito web che avrebbe dovuto essere fatto in PHP, ma io non ho molto esperienza in PHP. Comunque, è attivo e funzionante, ma c'è una grande stanza da migliorare. L'unica cosa che non mi sento bene è il modo in cui mi occupo di database: inserisco le informazioni di connessione al database in un file db.php separato e includo dove necessario. Ma ricordo di aver visto i file sorgenti PHP restituiti dal server molte volte.

Quindi ora la mia domanda è: qual è il modo migliore o il modo migliore per inserire i dati sensibili del database?

A proposito, come NON lasciare che PHP mostri messaggi di errore sulle pagine web quando le cose vanno male? Una pagina di errore personalizzata o impostazioni da qualche parte in php.ini? Grazie!

Nota: sto usando PHP nel suo vecchio sapore, non orientato agli oggetti. Ma io sono aperto a object-oriented o un modo MVC se ci sono migliori approcci che modo per prepararsi per i progetti futuri

+0

Domande buone e importanti! +1 per pensare alla sicurezza. – David

+4

A proposito, ['display_errors'] (http://www.php.net/manual/en/errorfunc.configuration.php#ini.display-errors) dovrebbe ** SEMPRE ** essere impostato su' off 'su un server di produzione. In questo modo, PHP genererà un errore di 500 invece di mostrare l'errore effettivo. –

+0

Immagino che display_errors = off in php.ini dovrebbe impedire a eventuali errori di mostrare – anuragsn7

risposta

7

Non so se questo è quello che stai cercando:
si può mettere i vostri dati sensibili nel tuo db.php, ma all'esterno della directory root web (public_html o www).

Ad esempio, è possibile avere una directory denominata config che è un fratello della directory principale Web e memorizzare lì il file db.php.

È possibile includere il file db.php in questo modo:

require_once('../config/db.php'); 

Spero che questo aiuta.

+2

+1 per questo soluzione, inoltre, non dimenticare di modificare i diritti di questo file al più basso, ma ancora leggibile dal server web. Se il file è di proprietà del processo del webserver, forse '0600' sarebbe abbastanza sicuro ?. –

1

La sua multa per metterlo in un file db.php, basta usare require_once() subito dopo il tag di apertura <?php di ogni documento.

Se la restrizione basata non è in vigore, spostare il file db.php al di fuori del proprio sito/root ftp in modo decisamente non accessibile tramite http/ftp. Assicurati che le autorizzazioni siano impostate correttamente su questo file.

Poiché non si utilizza OOP o una struttura MVC per il codice, questa è la via migliore da percorrere.

2

vorrei creare personalmente un db.php file chiamato e collocarlo sopra la cartella public_html sul server

ad esempio

<?php 
    error_reporting(0); 
    $link = FALSE; 
    $link = mysql_connect('hostname', 'username', 'password'); 
    if (! $link) 
    { 
     die("Couldn't connect to mysql server!"); 
    } else { 
     mysql_select_db('databasename'); 
    } 
?> 

Questo si spegne la segnalazione degli errori, allo stesso tempo, come il collegamento al vostro database, dal tuo index.php potresti includere il file in questo modo:

<?php require('../db.php'); ?> 
Problemi correlati