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.
Antworten
Zu viele Anzeigen?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.
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:
`
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!
- See previous answers
- Weitere Antworten anzeigen
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!