Fragen Sie sich selbst diese Frage:
- Warum ich das Passwort zu speichern bin, wenn der Benutzername in der Datenbank
einzigartig ist
Nachdem Sie beantwortet haben, dass Sie zu dem Schluss kommen aus sollte, dass ihr sinnlos, Sie können entweder den Benutzernamen oder die Benutzer-ID in der Sitzung speichern, wenn es um Anmeldesysteme geht.
Wie Login-Systeme funktionieren, ist, dass der Benutzer das Benutzername-Passwort aus einem Formular an den Server sendet, wo es validiert, während der Validierung wählen Sie den Benutzer aus der Datenbank where username = post_username
.
Wenn keine Zeilen gefunden wurden, existiert der Benutzer nicht, so dass Sie die Ausgabe zu diesem Zeitpunkt direkt senden können, wenn der Benutzer existiert, dann vergleichen Sie das Passwort mit dem post_password.
Der Grund, warum wir die Zeile nur durch den Benutzernamen auswählen, ist, dass Sie eine Art Hash-System integrieren sollten, um zusätzliche Sicherheit hinzuzufügen.
Wenn Sie das Passwort als (Passwort + Hash) speichern, was eine neue Zeichenfolge wäre, würden Sie auch nur den Hash speichern. Wenn also ein Benutzer gefunden wird, können Sie einen Hash von (post_password + db_hash)
erstellen und prüfen, ob es ist das gleiche wie die db_password
.
Auf diese Weise, wenn Ihre Datenbank irgendwie durchgesickert wird, sind Ihre Benutzeranmeldeinformationen sicherer.
Sobald der Benutzer validiert wurde, speichern Sie die Benutzer-ID in der Sitzung und dann können Sie bei jedem Laden der Seite überprüfen, ob die ID innerhalb der Sitzung ist und ob der Benutzer gerade angemeldet ist und Sie auswählen können die Benutzerdaten durch SELECT * FROM users WHERE id = session_id
.
Dies sollte Ihnen den Anfang machen.
Warum speichern Sie das Passwort im Klartext in/tmp? – rook