Passwort-Hashing und Unterstützung für Ihren Benutzer


10

Wir sind kürzlich zu einer besseren Strategie zum Speichern von Passwörtern übergegangen, mit all den guten Dingen:

  • Passwörter werden nach dem Durchlaufen von bCrypt gespeichert
  • Der Benutzer erhält bei der Kontoerstellung einen Aktivierungslink, um den Besitz der Adresse zu bestätigen
  • Passwort ohne Sicherheitsfrage vergessen, ein Link wird an ihre E-Mail gesendet.
  • Der Link läuft nach 24 Stunden ab. Ab diesem Zeitpunkt müssen sie einen neuen anfordern.
  • Wenn das Konto von unseren Mitarbeitern erstellt wird, wird eine E-Mail mit einem zufälligen sicheren Passwort gesendet. Beim Anmelden muss der Benutzer es auf etwas zurücksetzen, das wir nicht kennen und das bCrypt'd ist.

Dies entspricht der "Best-Practice", aber dies hat unsere Anzahl an Supportanfragen von regulären Benutzern, die dies alles nicht verstehen, erheblich erhöht. Sie möchten sich nur anmelden.

Wir erhalten häufig Anfragen von Benutzern, die sich beschweren über:

  • Falsches Passwort (von dem, das sie zurücksetzen müssen, wird es häufig mit einem Leerzeichen am Ende eingefügt). Sie sagen uns, was sie verwenden, aber wir können ihnen nicht sagen, wie ihr aktuelles Passwort lautet.
  • Sie sagen, dass sie die von uns gesendete E-Mail nicht erhalten (Aktivierung, Zurücksetzen usw.). Dies ist häufig nicht der Fall. Nach eingehender Fehlerbehebung haben wir normalerweise festgestellt, dass sie einen Tippfehler in der E-Mail gemacht haben, dass sie nicht das richtige E-Mail-Konto überprüft haben oder dass es einfach in den Spam-Ordner verschoben wurde.

Wir können es natürlich nicht für sie versuchen, da wir das Passwort nicht haben. Wir protokollieren die fehlgeschlagenen Versuche, löschen aber auch das verwendete Kennwort, da es wahrscheinlich das Kennwort ist, das für ein anderes Konto verwendet wird, und wir wollten es nicht in einer Nur-Text-Protokolldatei speichern. Dies lässt uns so ziemlich nichts, was ihnen helfen könnte, wenn sie Probleme melden.

Ich bin gespannt, wie die meisten Leute mit solchen Themen umgehen.


2
Abgesehen davon, dass die E-Mails, die Ihr System an Benutzer sendet, etwas aussagekräftiger sind, sehe ich nicht, was Sie unter Beibehaltung von Best Practices anders machen könnten. Sie wünschen sich, Sie könnten einfach die dummen Benutzer schlagen.
Bernard

1
Die Leute sind dumm, Ihre Benutzer, mehr als die meisten anderen, ich sehe die Frage hier nicht?

8
Jarrod, du beleidigst nur deine Benutzer. Der Dumme hier bist du. Sie verstehen den Grad der Computerkenntnisse Ihrer Benutzer nicht. Nichts für ungut, aber Sie schreiben Software für Leute, die nicht für Computerfreaks sind. Wenn Sie keine Frage sehen, bedeutet dies wahrscheinlich, dass all diese Usability-Experten entlassen werden sollten, weil sie nicht wirklich benötigt werden. Es ist nur ein Problem mit "dummen Leuten", also verbieten wir - clevere Entwickler sie einfach aus dem Web und das Problem wird verschwunden sein :) Wenn jemand ein System geschrieben hat, das nur der Autor verwenden kann, sehen Sie kein Problem?
Slawek

2
@Slawek: Nein, wirklich, die Leute sind dumm.
Bryan Boettcher

@JarrodRoberson, es sind kaum nur seine Benutzer - wenn es um öffentlich zugängliche Webanwendungen geht, ist das im Allgemeinen das, was Sie bekommen. Ob es Ihnen gefällt oder nicht , es beansprucht immer noch Support-Ressourcen und ist eine sehr berechtigte Frage.
Großmeister

Antworten:


7

Falsches Passwort (von dem, das sie zurücksetzen müssen, wird es häufig mit einem Leerzeichen am Ende eingefügt). Sie sagen uns, was sie verwenden, aber wir können ihnen nicht sagen, wie ihr aktuelles Passwort lautet.

Behebbar, indem stattdessen ein Link mit einer einmaligen GUID eingefügt wird, die sie anmeldet und sie zwingt, das Kennwort zurückzusetzen. Zwingen Sie den Benutzer nicht zum Kopieren und Einfügen. (Warum nicht auch Leerzeichen am Ende des Passworts in Ihrem Formular entfernen?)

Sie sagen, dass sie die von uns gesendete E-Mail nicht erhalten (Aktivierung, Zurücksetzen usw.). Dies ist häufig nicht der Fall. Nach eingehender Fehlerbehebung haben wir normalerweise festgestellt, dass sie einen Tippfehler in der E-Mail gemacht haben, dass sie nicht das richtige E-Mail-Konto überprüft haben oder dass es einfach in den Spam-Ordner verschoben wurde.

Stellen Sie sicher, dass Ihre ausgehende E-Mail von Spam befreit ist (möglicherweise richten Sie Testkonten für einige gängige E-Mail-Dienste ein), protokollieren Sie alle Ereignisse und melden Sie dies möglicherweise dem Benutzer, wenn dieser versucht, einen neuen Reset anzufordern (z. B. E-Mail an johndoee @ gmail) .com fehlgeschlagen, Benutzer nicht gefunden, haben Sie es richtig geschrieben?). Machen Sie den Benutzern auch Rechtschreib- und Spamprobleme klar.

OpenID und andere Authentifizierungen von Drittanbietern sind ebenfalls eine Option, wie andere bereits gesagt haben.


Einige Leute setzen Leerzeichen in ihre Passwörter?
Soandos

Einige Leute schneiden und fügen automatisch generierte Passwörter ein und fügen versehentlich Leerzeichen am Anfang und / oder Ende ein. (Lesen Sie die Frage.)
Macke

3

Ich würde sagen, verwenden Sie eine Authentifizierungsmethode eines Drittanbieters wie Facebook, OpenID, Google ... was auch immer für Ihre Benutzer geeignet ist. Wenn sich Ihre Benutzer jedoch nicht an Ihr Kennwort erinnern können, können sie möglicherweise kein Authentifizierungssystem eines Drittanbieters verwenden ...

Abhängig von Ihrer Situation können Sie möglicherweise ein anderes System verwenden, z. B. SSL-Client-Zertifikate (diese sind für Endbenutzer definitiv schwer zu installieren, aber wenn dies ein Unternehmen ist und Sie die Installation automatisieren können, ist es großartig), Windows SSO, eine mobile App usw.


Client-Zertifikate sind eine schreckliche Idee. Sie sind unsicher und ein Albtraum, den man aus der Ferne beheben kann, wenn etwas schief geht. Openid ist eine gute Idee
Tom Squires

Wie sind Zertifikate unsicher?
Bernard

@bernard Jeder, der an diesem PC ist, hat das Zertifikat. Es ist auch ziemlich einfach, mit einem Virus rauszukommen
Tom Squires

1
Ich bin damit einverstanden, dass sie nur so sicher sind wie die Maschine, auf der sie sich befinden, aber das ist ein ganz anderes Problem.
Bernard

3

Müssen Sie es überhaupt tun? Das erste, was Sie tun müssen, um festzustellen, was Sie schützen und vor wem Sie es schützen. Vielleicht ist es die Kosten für Best Practice einfach nicht wert, und vielleicht hält Best Practice Ihren Angreifer nicht einmal auf.

Wenn Sie gegen die NSA antreten und etwas haben, das sie wollen, geben Sie auf und machen Sie Ihren Benutzern das Leben leichter. Wenn Sie Kreditkartennummern haben, müssen Sie sich mit den Problemen abfinden, die das erforderliche Sicherheitsniveau erfordert, da es Bösewichte gibt, die sie wollen und Geld und Zeit ausgeben, um sie zu bekommen. Wenn Sie Zugang zu einem Familienfotoalbum haben, brauchen Sie all diese Sicherheit.

Lesen Sie mehr über Buce Scheiners Werke (Secrets and Lies), um die Sicherheit besser zu verstehen.


3

Das erste, was herausspringt, ist, dass Ihre E-Mails in Junk-Mail gehen. Es ist nicht trivial, E-Mails so einzurichten, dass sie als echt erkannt werden. Ich schlage vor, Sie prüfen, wie Sie verhindern können, dass Ihre E-Mail falsch gekennzeichnet wird (separate Frage zu SO?).

Das zweite, was ich empfehlen würde, ist, Ihren Benutzern eine Website / App mit einem Klick zu geben, die die E-Mails zur Kennwortwiederherstellung initiiert. Weigere dich, es anders als per E-Mail zu tun, es ist unsicher und stellt einen schlechten Präzedenzfall dar.


Nicht dass E-Mail eine besonders sichere Möglichkeit ist, vertrauliche Informationen zu übertragen. Wenn nur normale Benutzer mit GPG- und SSH-Schlüsseln belästigt werden könnten ...
tdammers

@tdammers Ich stimme zu, es ist nicht so sicher. Es ist jedoch zum Grundpfeiler Ihrer Online-Identität geworden (zum Guten oder Schlechten). Derzeit gibt es keine bessere Alternative.
Tom Squires

Ja da ist. Verschlüsselte E-Mail. Ich benutze es die ganze Zeit und es ärgert mich, dass selbst große Unternehmen sich nicht die Mühe machen, Pubkey-Verschlüsselung für vertrauliche E-Mails anzubieten. Es ist nicht einmal schwer zu implementieren. Ich finde es seltsam, dass es Gesetze gibt (zumindest hier in den Niederlanden), die SSL für vertrauliche Informationen verbindlich machen, aber gleichzeitig wird das Senden derselben Informationen über einfaches SMTP als akzeptabel angesehen.
tdammers

@tdammers Ich weiß nicht genug darüber, um es selbst zu empfehlen. Es lohnt sich auf jeden Fall, sich mit OP zu befassen
Tom Squires

2

Die Tatsache, dass sie bereit sind, Sie anzurufen und Ihnen ihr Passwort laut mitzuteilen, zeigt Ihnen, dass für diese Benutzer das Passwort und die Informationen, die sie schützen, keine große Sache sind. Ich würde niemals eines dieser Dinge mit meinem Bankpasswort tun. Es gibt jedoch eine Reihe von Websites, die Kennwörter für Dinge verlangen, die sie wirklich nicht verdienen. Ich habe ein Standardkennwort, das ich für all diese verwende, und je mehr "Hey, das ist kein sicheres Kennwort" oder "Wir machen Ihnen ein Kennwort und zwingen Sie, es regelmäßig zu ändern" usw., desto weniger möchte ich verwenden dieser Service. Ich würde ein kurzes Gespräch mit den "Business Value" -Personen in Ihrem Leben führen, um zu sehen, ob es ein besserer Ansatz wäre, sie nur im Klartext in der Datenbank zu halten und sie auf Anfrage per E-Mail an Personen zu senden.

Wenn dies tatsächlich so sicher sein sollte, können Sie versuchen, was einer meiner Kunden mit dem System gemacht hat, das wir für sie codiert haben. Während Sie mit der Person telefonieren, gehen Sie in die Datenbank und ändern Sie ihre E-Mail-Adresse in Ihre. Gehen Sie dann ins Internet und klicken Sie auf Passwort vergessen. Warten Sie auf die E-Mail und melden Sie sich damit an. Ändern Sie auf der Website das Passwort in Passwort oder etwas anderes, das Sie dem Kunden mündlich zustimmen. Ändern Sie ihre E-Mail-Adresse wieder in ihre eigene Adresse und sagen Sie ihnen: "Alles klar, Ihr neues Passwort ist jetzt aktiv!" Zufriedene Kunden und Sie müssen ihnen nicht erklären, was alles los ist.


2
Die direkte Änderung der Datenbank ist an sich schon eine Sicherheitsverletzung. Dies bedeutet, dass Sie sich mit Ihrem System als jeder Benutzer ausgeben können.
Bernard

3
Meine Kunden hatten eine Windows-App, mit der sie jedes Feld für jeden Benutzer bearbeiten konnten, beispielsweise wenn sie ein Fax erhielten, das besagte, dass sie jetzt eine neue Telefonnummer hatten. Natürlich wurde es geprüft. Natürlich war ich NICHT GLÜCKLICH, als ich sah, dass dieses schriftliche Verfahren in der Nähe des Support Desks an die Wand geklebt wurde. Aber ich habe es akzeptiert, und es gibt einen Prüfpfad, der zeigt, was passiert ist, wenn jemand jemals anruft und sich beschwert, dass sein Passwort ohne seine Zustimmung zurückgesetzt wurde. Die Sache ist, nicht alles muss so sicher sein. Und die Benutzer sagen Ihnen, dass dies nicht sein muss.
Kate Gregory

1
Leider wissen es die meisten Benutzer nicht besser. Es liegt an den Entwicklern von Softwareanwendungen, Best Practices durchzusetzen.
Bernard

4
Ich bin damit einverstanden, dass dies eine große Sicherheitslücke ist. Und ich stimme , dass es kann die am besten geeignete Lösung sein. Es erscheint dem Kundensupport jedoch unglaublich albern, die E-Mail-Adresse des Kunden vorübergehend ändern zu müssen, um das Kennwort des Benutzers zurückzusetzen: Wenn Sie den Kundendienst Passwörter zurücksetzen lassen möchten, lassen Sie ihn dies einfach direkt tun.
John Bartholomew

4
Ich möchte auch darauf hinweisen, dass das Aufdecken von von Benutzern festgelegten Klartextkennwörtern (das Speichern von Passwörtern im Klartext überhaupt) meiner Meinung nach weitaus schlimmer ist, als dem Kundensupport die Möglichkeit zu geben , Benutzerkennwörter direkt zu ändern .
John Bartholomew

2

Die Methode des letzten Auswegs, die ich in der Vergangenheit auf einem System mit sehr Analphabeten verwendet habe, bestand darin, den Benutzer auf einen Bildschirm zu leiten, auf dem ihm eine Telefonnummer und eine Bestätigungsnummer zugewiesen wurden. Sie riefen die Telefonnummer an, überprüften ihre Identität manuell und lasen dann die Bestätigung. Die Support-Person hat sich in einem separaten System angemeldet, die Nummer eingegeben und eine zweite Nummer erhalten, die sie dem Kunden zurückgeben kann. Der Client verwendete den zweiten Code, um mit der Seite zum Zurücksetzen des Kennworts fortzufahren. Die Client-Version der Seite konnte nicht über die Subnetze des Support-Personals ausgeführt werden, und der Support-Bildschirm konnte nicht über die Clients ausgeführt werden.

Es ist nicht kugelsicher, da eine Support-Person einen VPN verwenden könnte, um beide Enden von einem Ort aus auszuführen. Für die Prüfung war dies jedoch ausreichend, da das Support-Konto als für die Aktivität verantwortlich protokolliert wurde


-5

Vielleicht durch die Implementierung von Sicherheitsregeln, die nicht Wahnsinnig sind. Auf diese Weise erhalten Sie nur weniger Sicherheit, da das System so schwer zu bedienen ist, dass Ihre Kunden Passwörter an Sie und ihre Freunde weiterleiten, damit es funktioniert!

Kannst du ihnen nicht einfach NORMALE Links senden, dann Passwort unten. Wenn der Link vom E-Mail-Client unterbrochen wird, zeigen Sie einfach das Formular mit einem Feld "Aktivierungscode" ... "an. Geben Sie den Aktivierungscode ein, den Sie in der E-Mail haben" ... 5 Ziffern, damit 0 nicht mit O usw. verwechselt wird. 4 Ziffern sind für Kreditkarten in Ordnung und Sie benötigen eine so komplizierte Richtlinie für die einfache Anmeldung? Wenn der Code nicht funktioniert, wiederholen Sie die Prüfung mit der TRIMmed-Zeichenfolge. Ich denke, es wird es nicht weniger sicher machen, oder? :) :)

Bei mir kommt es auch oft vor ... Ich doppelklicke auf das Passwort und der Endplatz wird kopiert. Es ist für mich unglaublich, warum Peple nicht herausfinden kann, nur endende weiße Zeichen zu entfernen, wenn die Prüfung fehlgeschlagen ist, und den Vorgang zu wiederholen. Dann schalte ich vielleicht das Briefgehäuse um, um zu überprüfen, ob ich nicht versehentlich CL gedrückt habe.

Sie haben es so sehr überkompliziert. Es ist nicht "Passwort zurücksetzen" und "anfängliches Passwort" ... sondern "Bestätigungscode" und "Bestätigungsnummer eingeben, die wir Ihnen an die E-Mail senden", "Keine E-Mail haben? Es wurde an xxx@yyy.com gesendet, überprüfen Ihr Spam wieder, haben Sie ihn immer noch nicht? Senden Sie Ihre Bestätigungs-E-Mail erneut ". Im HTML-Body ein Link. http://xxx.com/conf-12345-mymail-gmail-com.html . Kein Mail-Client wird dies brechen.


5
Die von ihm erwähnte Sicherheitsrichtlinie ist nicht nur nicht "INSANE", sondern sollte eine Anforderung aller "SANE" -Anwendungen sein. Links wie diese, die per E-Mail gesendet werden, müssen nach einer Weile ablaufen, um zu verhindern, dass das Passwort zurückgesetzt wird (entweder durch direkten Diebstahl des Links oder durch Stolpern über einen computergestützten Algorithmus). Passwörter sollten jedoch wahrscheinlich vor der Validierung gekürzt werden. Benutzer sind dumm. Es ist Gesetz. Die Antwort besteht nicht darin, unsere Sicherheitsmaßnahmen zu reduzieren, sondern proaktive Maßnahmen zu ergreifen, um sicherzustellen, dass unsere Benutzer die richtigen Verfahren verstehen.
Dalin Seivewright

7
-1. Dies ist eine vernünftige Methode, die die meisten Websites verwenden. Wenn ich auf einer Website ein "vergessenes Passwort" herausgebe und eine E-Mail mit meinem Passwort im Klartext erhalte, schließe ich mein Konto.
Matt Grande
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.