2009-07-13 11 views
3

Ich arbeite an einer Webanwendung, bei der - ob Sie es glauben oder nicht - die Benutzer ihre E-Mail-Adresse nicht angeben müssen, um sich anzumelden. Diese Anforderungen können sich nicht ändern. Die Benutzer melden sich mit einer ID und einem Passwort wie jede Standard-Website beim System an. Das Problem, mit dem ich konfrontiert bin, hat mit Benutzern zu tun, die ihr Passwort vergessen haben. Wenn sie eine neue generieren möchten, wie verifiziere ich ihre Identität?Best Practices für Sicherheitsfragen in Web-Apps

Zunächst wollte ich die Benutzer eine Sicherheitsfrage (aus einer Liste von 5) auswählen und eine Antwort geben. Wenn sie jemals die Seite Passwort vergessen eingeben, müssen sie ihre Login-ID sowie die Antwort auf ihre Sicherheitsfrage eingeben. Dies scheint etwas unsicher zu sein, da die Antwort auf diese Art von Fragen (Mädchenname der Mutter, Geburtsort usw.) im Allgemeinen nicht so schwer zu erlangen ist.

sind so hier einige meiner Fragen:

  • Sind Sicherheitsfragen der beste Ansatz für dieses Problem?
  • Wenn ja, was sind die besten Fragen?
  • Für wie viele Fragen muss ein Benutzer die Antworten eingeben?
  • Ist es notwendig, ein CAPTCHA auf der Seite Passwort vergessen?
  • Ist es besser für Benutzer, ihre eigenen Fragen zu erzeugen?

Jede Hilfe/Kommentare/Literatur zu diesem Thema würde sehr geschätzt werden.

Antwort

2

Sind Sicherheitsfragen der beste Ansatz für dieses Problem?

Da Sie keine anderen Authentifizierungsmethoden (wie E-Mail-Adresse, OpenID usw.) verwenden können, ist dies das Beste, was Sie wirklich tun können. Sie können dem Anmeldevorgang jedoch immer einen "Kennworthinweis" hinzufügen.

  • Wenn ja, was sind die besten Fragen?
  • Ist es besser für Benutzer, ihre eigenen Fragen zu erzeugen?

Es ist viel einfacher, wenn der Benutzer schreibt seine/ihre eigene Frage lässt in Bezug auf die Lagern „erste Auto“ oder „erstes Haustiere“ gegenüber. Dies ist eine gute Ausfallsicherheit, da es (normalerweise) eine sehr schwierige Frage/Antwort-Kombination zum zufälligen Erraten bereitstellt und wahrscheinlich genauso geheim ist wie ein Passwort.

Für wie viele Fragen muss ein Benutzer die Antworten eingeben?

Erlaube eine Frage/Antwort-Kombination.

Ist es notwendig, ein CAPTCHA auf der Seite Passwort vergessen?

Nun, es muss einige Versuche geben, gegen Brute-Force-Angriffe, vor allem von Bots, zu schützen.Ich würde die gleiche Technologie verwenden, die SO verwendet: reCAPTCHA

0

Ich kann den Standort nicht erinnern, aber wenn Sie eine Google-Suche auf wissen basierte Authentifizierung tun, werden Sie Ifnd Q & Eine Authentifizierung ist sehr schwach. Ein bedeutendes Problem ist die Entropie (mögliche Zufälligkeit) möglicher Antworten und tatsächlicher Antworten. Wenn Sie nach einer Lieblingsfarbe fragen, gibt es wirklich nur eine sehr kleine Liste von Farben, die die meisten Benutzer auswählen. Dies könnte 1 Bit Entropie wert sein. Wenn du dann eine zweite Frage stellst, zum Beispiel die Stadt, in der du aufgewachsen bist, könnte dir das ein oder andere Entropie einbringen (in Mexiko gibt es für jede dieser 3 Städte eine Chance von 30% auf diese Antwort).

Eine Schätzung, die ich sah, war, dass, um die gleiche Stärke zu einem 8-stelligen Passwort zu bekommen, Sie etwa 26 Fragen benötigen.

Das heißt, Sie können andere Dinge tun, um den Benutzer zu kontaktieren. Sie könnten versuchen, anstelle einer E-Mail eine SMS an den Benutzer zu senden - registriert der Benutzer eine Telefonnummer? Sie könnten den Benutzer ein Zertifikat auf seinem Computer speichern lassen, das sie zusammen mit der Anforderung zum Zurücksetzen des Kennworts hochladen können (Sie müssen sich bemühen, sicherzustellen, dass dieses Zertifikat an den Computer gebunden ist). Sie könnten ein Post-Signup-Ereignis durchführen, bei dem der Benutzer eine E-Mail-Adresse senden kann.

Viel Glück!