Aus Sicherheitsgründen werden beim Anmelden in meiner aktuellen App keine Parameter gespeichert, die an Anmeldemethoden oder Methoden zum Zurücksetzen des Kennworts übergeben wurden. Der Protokollaufruf verfügt über einen optionalen Parameter, der dies steuert. Wenn dieser Parameter auf true gesetzt ist, wird das gespeicherte Parameterobjekt durch ersetzt [Redacted]
. Klar, ich verpasse ein wenig Daten, aber ich habe ihre IP-Adressen und möchte lieber nicht riskieren, etwas so sensibles im Klartext zu bekommen.
Wenn Sie wirklich so etwas protokollieren möchten, würde ich vorschlagen, dass Sie beim Protokollieren eines Anmeldeversuchs die Datenbank auf Benutzer mit einem Namen überprüfen, der mit dem im Feld Benutzername übereinstimmt, und ihn nur speichern, wenn Sie eine Übereinstimmung haben. Andernfalls speichern Sie es einfach als "unbekannter Benutzer". Sie könnten sich vorstellen, zu prüfen, ob dieser Wert das oder was auch immer enthält, aber es besteht immer das Risiko, dass Sie Kombinationen wie [User] [Password] und [UserPas] [sword] erhalten. In diesem Fall können Sie anhand der IP prüfen und daraus ableiten Sie haben versehentlich den Anfang des Passworts einer anderen Person im Klartext gespeichert. Sie können dies auf das unwahrscheinliche aber mögliche [User] [Password] und [UserPassword] [??] ausweiten. In diesem Fall wird "Fehlgeschlagene Anmeldung mit UserPassword" angezeigt, gefolgt von "Erfolgreiche Anmeldung mit User", und Sie können alle ableitendes Benutzerpassworts. Im Allgemeinen würde ich sicherheitshalber sagen, dass Benutzernamen nur dann protokolliert werden, wenn die Anmeldung erfolgreich ist.
Zum Hinzufügen bearbeiten:
Die meisten Argumente, die Leute für die Protokollierung des Benutzernamens für fehlgeschlagene Anmeldeversuche vorbringen, lassen sich meiner Meinung nach besser mit anderen Methoden behandeln.
Zum Beispiel wurde gesagt, dass wenn ein Kunde fragt, warum ich mich nicht anmelden kann, protokollierte Benutzernamen es Ihnen ermöglichen würden, Tippfehler anzuzeigen. Dies ist wahr, aber das Risiko, auch Passwörter zu fangen, ist es nicht wert. Ich würde dies tun, indem ich den Benutzer bei einem Fehler zurück zum Anmeldeformular leite, das Feld "Benutzername" hervorhebe und es mit den eingegebenen Daten erneut ausfülle, damit sie es selbst sehen können.
Ein weiteres Argument war, dass Sie damit Hacking-Versuche identifizieren können. Eine Reihe von Fehlern gegen einen Benutzernamen kann durchaus ein Versuch sein, ein Passwort zu erzwingen. Zu diesem Zweck wird in der Tabelle "Users" eine Spalte "BadLogins" angezeigt, die jedes Mal erhöht wird, wenn eine Anmeldung mit einem Benutzernamen fehlschlägt, der diesem Benutzer entspricht, und bei erfolgreicher Anmeldung auf Null zurückgesetzt wird, nachdem dem Benutzer mitgeteilt wurde, dass dies der Fall war x erfolglose Anmeldeversuche seit Ihrem letzten Login "und Ratschläge, was zu tun ist, wenn sie nicht glauben, dass die Versuche von ihnen stammen. Wenn Sie wirklich gründlich sein möchten, können Sie eine weitere Spalte haben, in der der letzte Wert der BadLogins-Spalte auch nach der erfolgreichen Anmeldung gespeichert ist, und / oder eine Spalte, in der der bisher höchste Wert dieser Spalte gespeichert ist, und / oder eine Spalte, in der dieser Wert gespeichert ist Speichert die Gesamtzahl der fehlgeschlagenen Anmeldungen, die dieses Konto jemals hatte.