445 Stimmen

Wie kann man Datenbankpasswörter in PHP sichern?

Wenn eine PHP-Anwendung eine Datenbankverbindung herstellt, muss sie natürlich in der Regel einen Login und ein Passwort übergeben. Wenn ich für meine Anwendung einen einzigen Mindestberechtigungs-Login verwende, muss das PHP diesen Login und das Passwort irgendwo wissen. Was ist der beste Weg, um dieses Passwort zu sichern? Es scheint, als wäre es keine gute Idee, es einfach im PHP-Code zu schreiben.

3 Stimmen

Um vollständig sicher zu sein, müssen Sie eine SSL-Verbindung einrichten, da sonst jeder in Ihrem Netzwerk das Passwort, das Sie eingeben, immer noch abfangen kann.

2 Stimmen

Meinen Sie die Benutzerpasswörter oder das Datenbankpasswort, das im Verbindungsschlüssel verwendet wird?

5 Stimmen

Datenbankpasswort, das im Verbindungszeichenfolge verwendet wird. Vielen Dank!

265voto

user11318 Punkte 9115

Viele Leute interpretieren dies fälschlicherweise als Frage nach der Speicherung von Passwörtern in einer Datenbank. Das ist falsch. Es geht darum, wie man das Passwort speichert, das es einem ermöglicht, auf die Datenbank zuzugreifen.

Die übliche Lösung besteht darin, das Passwort aus dem Quellcode in eine Konfigurationsdatei zu verschieben. Überlassen Sie dann die Verwaltung und Sicherung dieser Konfigurationsdatei Ihren Systemadministratoren. Auf diese Weise müssen Entwickler nichts über die Produktionspasswörter wissen, und es gibt keinen Eintrag des Passworts in Ihrer Quellkontrolle.

104voto

kellen Punkte 6735

Wenn Sie auf dem Server einer anderen Person hosten und keinen Zugriff außerhalb Ihres Webroots haben, können Sie Ihr Passwort und/oder Ihre Datenbankverbindung immer in einer Datei speichern und die Datei mit einer .htaccess sperren:

order allow,deny
deny from all

57voto

Lars Nyström Punkte 5258

Der sicherste Weg besteht darin, die Informationen überhaupt nicht in Ihrem PHP-Code anzugeben.

Wenn Sie Apache verwenden, bedeutet das, die Verbindungsdetails in Ihrer httpd.conf oder virtual hosts Datei festzulegen. Wenn Sie das tun, können Sie mysql_connect() ohne Parameter aufrufen, was bedeutet, dass PHP Ihre Informationen niemals ausgibt.

So geben Sie diese Werte in diesen Dateien an:

php_value mysql.default.user myusername
php_value mysql.default.password mypassword
php_value mysql.default.host server

Dann öffnen Sie Ihre MySQL-Verbindung so:

`

Oder so:

`

45voto

da5id Punkte 8980

Speichern Sie sie in einer Datei außerhalb des Web-Roots.

40voto

pdavis Punkte 3174

Für äußerst sichere Systeme verschlüsseln wir das Datenbankpasswort in einer Konfigurationsdatei (die selbst vom Systemadministrator gesichert ist). Beim Start der Anwendung/des Servers fordert die Anwendung dann den Systemadministrator zur Eingabe des Entschlüsselungsschlüssels auf. Das Datenbankpasswort wird dann aus der Konfigurationsdatei gelesen, entschlüsselt und im Speicher für zukünftige Verwendung gespeichert. Es ist immer noch nicht zu 100% sicher, da es im Klartext im Speicher gespeichert ist, aber man muss es irgendwann als 'ausreichend sicher' bezeichnen!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X