2012-04-16 16 views
13

Mögliche Duplizieren:
How to secure database passwords in PHP?Wo die Datenbank sensible Informationen setzen

Vor kurzem wurde ich ein Website-Projekt gegeben, das in PHP getan werden sollte, aber ich habe nicht viel Erfahrung in PHP. Wie auch immer, es läuft und läuft, aber es gibt einen großen Raum, den es zu verbessern gilt. Die eine Sache, die mir nicht gut geht, ist die Art, wie ich mit der Datenbank handle: Ich stelle die Datenbankverbindungsinformationen in eine separate db.php-Datei und füge sie bei Bedarf ein. Aber ich erinnere mich, dass PHP-Quelldateien viele Male vom Server zurückgegeben wurden.

Jetzt ist meine Frage: Was ist ein besserer oder der beste Weg/Ort, um Datenbank-sensible Daten zu setzen?

Übrigens, wie kann man PHP nicht Fehlermeldungen auf Webseiten anzeigen lassen, wenn etwas schief läuft? Eine benutzerdefinierte Fehlerseite oder Einstellungen irgendwo in php.ini? Vielen Dank!

Hinweis: Ich verwende PHP in seinem alten Geschmack nicht objektorientiert. Aber ich bin offen für objektorientierte oder MVC Art und Weise, wenn es besser nähert sich auf diese Weise für zukünftige Projekte zur Vorbereitung

+0

Gute, wichtige Fragen! +1 für das Denken an die Sicherheit. – David

+4

Übrigens sollte ['display_errors'] (http://www.php.net/manual/en/errorfunc.configuration.php#ini.display-errors) ** IMMER ** auf 'off' gesetzt werden 'auf einem Produktionsserver. Auf diese Weise wird PHP einen Fehler von 500 werfen, anstatt den tatsächlichen Fehler anzuzeigen. –

+0

Ich denke, display_errors = aus in PHP.ini sollte verhindern, dass Fehler angezeigt – anuragsn7

Antwort

7

Ich weiß nicht, ob dies ist, was Sie suchen:
Sie können Ihre sensiblen Daten legen in Ihrer db.php, aber außerhalb des Web-Stammverzeichnisses (public_html oder www).

Zum Beispiel könnten Sie ein Verzeichnis namens config haben, das ein Geschwister Ihres Web-Stammverzeichnisses ist, und speichern Sie Ihre db.php-Datei dort.

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

Ich hoffe, das hilft:

Sie können Ihre db.php Datei wie folgt enthalten.

+2

+1 für diese Lösung, vergessen Sie auch nicht, die Rechte dieser Datei auf den niedrigsten Wert zu setzen, aber immer noch lesbar für den Webserver. Wenn die Datei dem Webserver-Prozess gehört, wäre "0600" vielleicht sicher genug? –

1

Es ist in Ordnung, es in eine db.php-Datei zu setzen, verwenden Sie einfach require_once() direkt nach dem Öffnen <?php Tag jedes Dokuments.

Wenn basisedir Beschränkung nicht in Kraft ist, verschieben Sie db.php Datei außerhalb Ihres Web/ftp root auf diese Weise ist definitiv nicht über http/ftp erreichbar. Stellen Sie sicher, dass die Berechtigungen für diese Datei ordnungsgemäß festgelegt sind.

Da Sie für Ihren Code keine OOP- oder MVC-Struktur verwenden, ist dies der beste Weg.

2

Ich persönlich würde eine Datei namens db.php erstellen und diese

zum Beispiel auf Ihrem Server über dem public_html Ordner platzieren

<?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'); 
    } 
?> 

Dieser Fehler zugleich Berichterstattung erlischt als eine Verbindung zu Ihrem Datenbank, von Ihrer index.php würden Sie die Datei so einschließen:

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