it-swarm.com.de

Dem Benutzer mitteilen, ob ein Konto vorhanden ist?

Jemand sagte mir, es sollte niemandem möglich sein zu erkennen, ob eine bestimmte E-Mail-Adresse von einem registrierten Benutzer auf einer Website verwendet wird. Wenn der Benutzer beispielsweise nach einem Zurücksetzen seines Kennworts fragt, sollten Sie "Kennwort gesendet" sagen, ob die E-Mail in der Datenbank vorhanden ist oder nicht. Wenn nicht, können Benutzer diese Funktion verwenden, um zu überprüfen, wer Mitglied ist, und um die Gültigkeit von Spam-Listen usw. zu überprüfen.

Ich habe jedoch festgestellt, dass Facebook "E-Mail bereits registriert" anzeigt, wenn Sie versuchen, dieselbe E-Mail zweimal zu registrieren. Bedeutet dies, dass sich die Konventionen geändert haben? dass es wichtiger ist, den Benutzer zu informieren, als Konten preiszugeben?

54
forthrin

Es ist eine ziemlich alte Tradition, Menschen nicht zu sagen, ob bestimmte Anmeldungen existieren oder nicht. Aus diesem Grund antworten Unix- oder Windows-Systeme bei der Abfrage von Benutzeranmeldeinformationen auf jeden Fehler mit einer allgemeinen Meldung "Falscher Benutzername oder falsches Kennwort". Die Idee stammt aus einer ziemlich altmodischen Vision von Angriffen: Stellen Sie sich einen Bösewicht vor, der in einen Mainframe eintreten möchte und es schafft, ein serielles Terminal in die Hände zu bekommen, das an das System angeschlossen ist, oder eine Telnet-Schnittstelle über eine Modemleitung. Dieser Angreifer befindet sich in der Position eines Online-Wörterbuchangriffs : Er versucht, ein Paar Login + Passwort zu erraten, das den Zugriff gewährt. Die administrativen Anmeldenamen wie "root" waren normalerweise besser geschützt als normale Benutzerkonten (der "root" -Benutzer war besser in der Auswahl sicherer Kennwörter, oder zumindest wurde dies vermutet), sodass Angreifer versuchen würden, normale Benutzerkonten zu finden, und in insbesondere normale Benutzerkontonamen .

Das Anschauen von dem Film War Games (von 1983) gibt Ihnen eine gute Vorstellung davon, wie die Dinge waren.

Beachten Sie den kritischen Punkt: Im obigen Angriffsszenario möchte der Angreifer mindestens ein Konto erhalten, konnte jedoch unter normalen Bedingungen kein Konto erhalten oder weiß sogar , wer hat ein Konto.

Es ist jetzt 2013, drei Jahrzehnte nach diesem Film. Wir haben Server, auf denen sich jeder kostenlos registrieren und ein Konto erhalten kann. Das Erhalten eines Kontos ist somit nicht länger das Ziel eines Angreifers. Stattdessen möchte der Angreifer auf spezifische Konten mit bekannten Identitäten zugreifen. Dies ist nicht die gleiche Situation. Der Kontext hat sich geändert. Daher ist alte Überlieferung nicht unbedingt anwendbar.


Wenn ein Benutzer versucht, sich auf Facebook zu registrieren, erwartet er , dass der Prozess funktioniert . Zu diesem Zeitpunkt schlägt der Prozess möglicherweise nur aus einem plausiblen Grund fehl, nämlich einer bereits verwendeten E-Mail-Adresse. Es wäre schwierig, diese Tatsache vor dem Benutzer zu verbergen ...

Wenn wir Benutzer-E-Mail-Adressen "schützen" möchten, muss der Registrierungsprozess folgendermaßen ablaufen:

  • Der Benutzer gibt seine angebliche E-Mail-Adresse ein.
  • An diese Adresse wird eine E-Mail gesendet, die einen einmaligen Registrierungslink enthält. Wenn die E-Mail jedoch bereits registriert ist, wird eine E-Mail gesendet, in der diese Tatsache erläutert wird. Auf der Antwortwebseite wird kein Hinweis darauf geschrieben, ob die E-Mail bereits im System vorhanden war oder nicht.
  • Der Benutzer registriert sich, indem er dem Link aus der E-Mail folgt.

Ein solcher Prozess würde sich als E-Mail-Überprüfungsprozess verdoppeln. Das ist also gut so. Es hat jedoch eine gewisse Latenz (der Benutzer muss die Website verlassen, seinen E-Mail-Reader öffnen und auf die eingehende E-Mail warten), sodass dies für Einkaufsseiten problematisch sein kann (Benutzer sind nicht geduldig und neigen zum Einkaufen anderswo, wenn sie den Kaufvorgang als zu umständlich empfinden). Außerdem müssen einige Leitplanken vorhanden sein, um zu verhindern, dass dieses Registrierungssystem in einer Spam-Maschine missbraucht wird.


Ich denke, es kann gesagt werden, dass es für Facebook-Betreuer wichtiger ist, den Registrierungsprozess so reibungslos und schnell wie möglich zu gestalten als die Privatsphäre des Benutzers. Wirklich, wer würde das überraschen?

52
Thomas Pornin

Möglicherweise sind PII-Risiken zu berücksichtigen. Es ist davon auszugehen, dass "jeder" ein Facebook-Konto hat. Daher ist es keine große Sache, zu offenbaren, dass sich eine bestimmte E-Mail registriert hat.

Nehmen Sie jedoch einen anderen Dienst wie "depressions-help.com" oder "it-burns-when-I-tinkle.net". Es wäre ein Problem, der Öffentlichkeit mitzuteilen, dass eine bestimmte Person/E-Mail auf der Website registriert ist.

Bei kleinen Diensten mit einer absichtlich kleinen Benutzerbasis kann die Offenlegung von Benutzernamen einem Angreifer zusätzliche Informationen liefern, die Konten wie diese gefährden könnten bestimmter Film von 198 .

Hut-Tipp an @ThomasPornin, aber ich glaube, es gibt einige Fälle, wie diese, die ich vorgeschlagen habe, die es lohnenswert machen, eine fundierte Entscheidung darüber zu treffen, dass Benutzerkontonamen/E-Mails nicht veröffentlicht werden.

39
schroeder

Es gibt wirklich keinen würdevollen Weg, um dieses Problem zu lösen, der alle zu 100% glücklich machen kann. Wenn Sie die Verwendung von E-Mail-Adressen als Benutzernamen erzwingen, können Sie leicht feststellen, ob jemand mit einer bestimmten E-Mail-Adresse ein Benutzer ist (Datenschutzproblem). Wenn Sie beliebige Benutzernamen zulassen, können Sie nicht wirklich herausfinden, ob ein bestimmter Benutzername bereits verwendet wird oder nicht, und alles, was Sie wirklich tun können, ist, einen Benutzer zu verlangsamen, der versucht, gültige Benutzernamen zu ermitteln.

Neue Benutzerregistrierungen sind das schwierigste Problem, da es nicht umgangen werden kann, dass Sie sich irgendwann mit einer Kollision mit Benutzernamen befassen müssen. Hier ist eine mögliche Option: Lassen Sie den Benutzer eine E-Mail-Adresse, einen vorgeschlagenen Benutzernamen und das gewünschte Passwort eingeben. Überprüfen Sie beim Senden, ob das Kennwort akzeptabel ist, und senden Sie dem Benutzer eine Überprüfungs-URL per E-Mail.

  • Wenn die E-Mail-Adresse bereits verwendet wird, aber einem anderen Benutzernamen zugeordnet ist, senden Sie eine E-Mail an diesen Benutzer, erinnern Sie ihn daran, dass er bereits ein Konto hat, und fragen Sie, ob er das Kennwort zurücksetzen möchte.

  • Wenn die E-Mail-Adresse noch nicht verwendet wird, der Benutzername jedoch verwendet wird, senden Sie dem Benutzer eine Fehlermeldung per E-Mail, in der er darüber informiert wird, dass er einen anderen Benutzernamen auswählen muss und zwischen den einzelnen Versuchen immer länger warten muss.

  • Wenn sowohl die E-Mail-Adresse als auch der Benutzername neu sind, senden Sie dem Benutzer eine E-Mail mit einem Bestätigungslink, der eine erneute Authentifizierung mit dem neuen Benutzernamen und Passwort erfordert, bevor er offiziell wird.

  • Lassen Sie NICHT zu, dass zwei Benutzer denselben Benutzernamen haben, vorausgesetzt, Sie können den einen oder anderen anhand ihrer Kennwörter identifizieren. Wenn zwei Benutzer denselben Benutzernamen verwenden können, bedeutet dies unter anderem, dass Sie den Benutzernamen aufgrund fehlgeschlagener Anmeldeversuche niemals sperren können, ohne dass BEIDE Benutzer betroffen sind. Und Gott bewahre, wenn sie eines Tages das gleiche Passwort wählen, bricht die Hölle los.

  • Verwenden Sie nicht denselben Wert für Benutzername und öffentliche Identität. Sie müssen nicht unbedingt aktiv verhindern, dass Benutzer für beide den gleichen Wert eingeben, wenn sie dies wirklich wollen, aber die Standardeinstellung sollte sein, Benutzer zuzulassen (. Zum Beispiel in einem Nachrichtenforum, um einen öffentlichen Spitznamen zu haben, der nicht unbedingt etwas mit dem Benutzernamen zu tun hat, mit dem sie sich anmelden.

  • Weisen Sie Benutzer-IDs nicht nacheinander zu. Verwenden Sie mindestens 31, vorzugsweise 62 Bit-Zufallswerte, die zum Zeitpunkt der Registrierung generiert und als eindeutig verifiziert werden. Das Schöne an 31- und 62-Bit-Werten ist die Tatsache, dass sie sich ordentlich in Base36-Zeichenfolgen mit 6 und 12 Zeichen übersetzen lassen. Beim Debuggen ist es viel einfacher, sich eine 6- oder 12-stellige Zeichenfolge aus Kleinbuchstaben und Ziffern als einen 6-17-stelligen Dezimalwert zu merken. Am schwierigsten ist es, auf Anfragen zu antworten, die eine ungültige Benutzer-ID mit gefälschten Antworten angeben, die jedoch nicht ohne weiteres von tatsächlichen Benutzer-ID-Antworten mit algorithmischen Mitteln unterschieden werden können.

Denken Sie daran: Sie können und werden es niemals zu 100% schaffen, einen Angreifer daran zu hindern, gelegentlich zu überprüfen, ob eine bestimmte Benutzer-ID oder ein bestimmter Benutzername gültig ist. Ihr Ziel ist es, es so langsam und teuer wie möglich zu gestalten, ohne Ihre echten Benutzer unangemessen zu belasten. Denken Sie für ein reales Analogon an DVD- und Blu-Ray-Regionalcodes. Als ein Spieler mehr als 500 US-Dollar kostete, waren Regionalcodes eine effektive Möglichkeit, fast jeden davon abzuhalten, Filme abzuspielen, die aus einer anderen Region gekauft wurden. Jetzt, da Sie einen Blu-Ray-Player für 80 US-Dollar und einen HDMI-Selektor für 20 US-Dollar kaufen und Wechselgeld zurückbekommen können, hindert nichts einen Filmfan daran, nur zwei oder drei Blu-Ray-Player (einen pro gewünschter Region) zu kaufen und zu stapeln sie hochfahren und über den HDMI-Schalter laufen lassen.

Seien Sie bei routinemäßigen Anmeldungen absichtlich vage über den Grund, warum DIESER Anmeldeversuch fehlgeschlagen ist, aber auch über die möglichen Gründe im Voraus ... und geben Sie ihnen konkrete Kontaktinformationen von jemandem, der ihnen helfen kann. Verfolgen Sie fehlgeschlagene Anmeldungen und sperren Sie das Konto, wenn zu viele fehlgeschlagene Anmeldeversuche durchgeführt werden.

  • Sagen Sie ihnen nicht sofort, dass das Konto gerade gesperrt wurde oder gerade gesperrt ist ... aber scheuen Sie sich nicht, es als einen von mehreren möglichen Gründen zu nennen, warum ein Anmeldeversuch möglicherweise fehlgeschlagen ist. Die Tatsache, dass ein Konto möglicherweise von einem Benutzer gesperrt wird, der versucht, sich anzumelden, trägt nicht zu Ihrer Sicherheit bei.

  • Sie müssen ein Konto aufgrund fehlgeschlagener Anmeldeversuche nicht unbedingt semipermanent sperren. In vielen Fällen sollten Sie wahrscheinlich nicht , da Sie dann einen praktischen Denial-of-Service-Angriff erstellt haben. Wenn ein Konto zu viele erfolglose Anmeldeversuche hat, KÖNNEN Sie 1, 6 oder 24 Stunden lang eine "weiche" Sperre durchführen. An diesem Punkt wird die Sperre von selbst aufgehoben. Dies ist das eine Szenario IMHO, in dem es legitim ist, einen Benutzer anzuweisen, "es später erneut zu versuchen".

Eine Beispielfehlermeldung, die möglicherweise angezeigt wird, wenn ein Anmeldeversuch fehlschlägt:

Der von Ihnen eingegebene Benutzername und/oder das Passwort wurde nicht akzeptiert. Möglicherweise haben Sie einen ungültigen Benutzernamen eingegeben, ein falsches Kennwort verwendet oder versucht, sich mit einem Konto anzumelden, das aufgrund übermäßig fehlgeschlagener Anmeldeversuche gesperrt wurde. Wenn das Konto gesperrt wurde, können Sie _ __ um Hilfe bitten [oder warten _ Stunden, die das Konto selbst entsperren kann]. Bitte beachten Sie, dass diese Fehlermeldung für alle fehlgeschlagenen Anmeldungen unabhängig vom Grund gleich ist.

Sagen Sie ihnen NICHT "Etwas ist schief gelaufen, bitte versuchen Sie es später noch einmal", es sei denn, das Problem wird sich buchstäblich von selbst beheben. Es wird einen Angreifer nicht täuschen und legitime Benutzer ernsthaft ärgern. Dies ist eine meiner ultimativen Lieblingsbeschwerden und steht ganz oben auf meiner Liste der "schrecklichen Dinge, die Entwickler im Namen des Sicherheitstheaters tun". Abgesehen davon, dass es unglaublich ärgerlich ist, wenn jemandes Konto kompromittiert wurde, ist das LETZTE, was Sie möchten, dass Sie bis später warten, bevor Sie jemanden darauf aufmerksam machen.

7
Bitbang3r

Es ist Standard bei Facebook, dass Sie ein Konto suchen können, wenn Sie die entsprechende E-Mail-Adresse haben. Heutzutage haben viele Leute diese Option deaktiviert, aber das ist immer noch der Ort, an dem Facebook in Form kommt.

Bei der Forum-Moderation habe ich diese Funktion häufig verwendet, um Informationen darüber zu sammeln, ob ein neu registriertes Konto ein registriertes Konto eines gesperrten Benutzers ist.

Websites, die verraten, ob E-Mail-Adressen oder Benutzernamen echt sind, sind eine Möglichkeit, die Anonymität anzugreifen. Ich erinnere mich an einen Fall, in dem sich jemand neu registriert hat, der die IP eines TOR-Exit-Knotens verwendet hat. Ich konnte der Person den Namen seiner Mutter durch Informationen mitteilen, die er auf Facebook teilte. Der Weg zu den Informationen führte über vier Reifen von Spitznamen, die miteinander verbunden waren.

Die Offenlegung solcher Informationen erleichtert Unternehmen wie http://www.spokeo.com/ den Betrieb.

Wenn es um den Schutz der Privatsphäre geht, sollten Sie auch alle datensensitiven Daten berücksichtigen. Nehmen Sie an einem Forum mit 1000 Benutzern teil. Benutzer veröffentlichen harmlose Informationen unter einem Spitznamen. Ein Benutzer hat sich im Forum mit einer E-Mail-Adresse angemeldet, die seiner tatsächlichen Identität zugeordnet ist.

Bei 1000 Benutzern besteht eine gute Chance, dass ich mich mit Stylometrie identifizieren und Informationen offenlegen kann, welcher der 1000 Benutzer die Person ist, die ich suche. Wenn mir diese Aufgabe gelingt, habe ich einen geheimen Spitznamen.

Ich kann jetzt Google-Suchen für diesen Spitznamen ausführen und auch in anderen Datenbanken nach [email protected] suchen. Ich habe auch ein größeres Textbeispiel erhalten, um zukünftige Stylometrie-Angriffe einfacher ausführen zu können.

Ein Angreifer auf Regierungsebene, der Dissidenten finden möchte, verfügt über die Ressourcen, um viele Webservices abzufragen, um zu überprüfen, ob bestimmte E-Mail-Adressen vorhanden sind. Er kann auch in gute Stylometriesysteme investieren.

Wenn Sie die Privatsphäre schützen möchten, ist es sinnvoll, registrierte E-Mail-Adressen auszublenden.

4
Christian