Frage

Formular-basierte Authentifizierung für Webseiten

Wir glauben, dass Stack Overflow nicht nur eine Ressource, die für sehr spezifische technische Fragen, aber auch für die Allgemeinen Richtlinien, wie zu lösen, Variationen über häufige Probleme."Formular-basierte Authentifizierung für websites" sollte ein feines Thema für so ein experiment.

Es sollten Themen wie:

  • Wie zu log in
  • How to log out
  • Wie man eingeloggt bleiben
  • Die Verwaltung von cookies (einschließlich der empfohlene Einstellungen)
  • SSL/HTTPS-Verschlüsselung
  • Wie zum speichern von Passwörtern
  • Mit geheimen Fragen
  • Vergessen Benutzername/Passwort-Funktionalität
  • Nutzung nonces um zu verhindern, dass cross-site-request-forgeries (CSRF -)
  • OpenID
  • "Remember me" checkbox
  • Browser-automatische Vervollständigung von Benutzernamen und Passwörtern
  • Geheime URLs (public URL geschützt durch verdauen)
  • Überprüfung der Kennwortsicherheit
  • E-mail-Validierung
  • und viel mehr über Formular-basierte Authentifizierung...

Sollte es nicht gehören Dinge wie:

  • Rollen und Berechtigungen
  • HTTP-basic-authentication

Bitte helfen Sie uns, indem Sie:

  1. Was darauf hindeutet Unterthemen
  2. Absenden guten Artikel über dieses Thema
  3. Bearbeiten der offizielle Antwort
War es hilfreich?

Lösung

TEIL I:Wie Zu Log In

Wir ' ll nehme an, Sie wissen bereits, wie zu bauen ein login+Passwort-HTML-Formular, welche Beiträge die Werte in ein script auf der server-Seite für die Authentifizierung.Die folgenden Abschnitte befassen sich mit den mustern für die fundierte praktische auth, und wie zu vermeiden, die die meisten der gemeinsamen Sicherheits-Fallstricke.

HTTPS oder nicht zu HTTPS?

Es sei denn, die Verbindung ist bereits sicher (, dass ist, getunnelt Via HTTPS mit SSL/TLS), Ihre login-Formular-Werte werden in Klartext gesendet, die jedermann mithören auf der Linie zwischen browser und web-server gelesen werden können Anmeldungen, wie Sie passieren.Diese Art des Abhörens wird routinemäßig durchgeführt, die von Regierungen, aber im Allgemeinen, wir werden nicht die Adresse im 'Besitz' Drähte andere als zu sagen:Wenn Sie den Schutz alles, was wichtig ist, verwenden Sie HTTPS.

In Essenz, die nur praktische Schutz gegen Abhören/packet sniffing während der Anmeldung ist durch die Verwendung von HTTPS oder ein anderes Zertifikat-basierte Verschlüsselung-Schema (für Beispiel, TLS) oder eine bewährt & getestet challenge-response-Schema (für Beispiel, die Diffie-Hellman-basierend SRP). Jede andere Methode kann leicht umgangen werden durch eine Lauschangriffe Angreifer.

Natürlich, wenn Sie bereit sind, Holen Sie sich ein wenig unpraktisch, Sie könnte ebenfalls eine form der zwei-Faktor-Authentifizierung-System (z.B.die Google Authenticator-app, eine physische 'kalten Krieges' - Stil Codebuch, oder einen RSA-Schlüssel-generator-dongle).Wenn richtig angewendet, könnte dies funktioniert auch mit einer ungesicherten Verbindung, aber es ist schwer vorstellbar, dass ein dev wäre bereit, implementieren Sie die zwei-Faktor-auth, aber nicht SSL.

(Nicht) Roll-Sie-Ihre-eigene JavaScript-Verschlüsselungs-und hashing

Angesichts der nicht-null-Kosten und wahrgenommene technische Schwierigkeiten bei der Einrichtung eines SSL-Zertifikats auf Ihrer website an, einige Entwickler sind versucht, Rollen Sie Ihre eigenen in-browser-hashing-oder Verschlüsselungsverfahren, um zu vermeiden, durch Klartext-Anmeldungen, die über eine ungesicherte Leitung.

Dies ist zwar eine edle Gedanken, ist es im wesentlichen nutzlos (und kann auf einen Sicherheitslücke), es sei denn, es ist kombiniert mit einer der oben genannten -, die ist, die Sicherung der Linie, mit eine starke Verschlüsselung oder mit eine versucht-und-getestet challenge-response-Mechanismus (wenn Sie nicht wissen, was das ist, weiß nur, dass es eines der am schwierigsten zu beweisen, die meisten schwer zu entwerfen, und die am schwierigsten zu implementieren Konzepte im Bereich digitale Sicherheit).

Während es wahr ist, dass das Passwort-hashing werden können wirksam gegen Passwort Offenlegung, es ist anfällig für replay-Angriffe, Man-In-The-Middle-Angriffe / Entführungen (falls es einem Angreifer gelingen kann, ein paar bytes in Ihre ungesicherte HTML-Seite, bevor es erreicht Sie Ihren browser, Sie können, kommentieren Sie einfach die Vermischung in der JavaScript -), oder brute-force-Angriffe (da Sie mit der übergabe der Angreifer Benutzername, salt-und Hash-Passwort).

CAPTCHAS gegen die Menschlichkeit

CAPTCHA gemeint ist, zu durchkreuzen eine spezielle Kategorie von attack:automatisierte Wörterbuch - /brute-force-Versuch-und-Irrtum-mit keine menschlichen Bediener.Es besteht kein Zweifel, dass dies eine echte Bedrohung, aber es gibt Möglichkeiten, damit umzugehen nahtlos, die nicht erfordern ein CAPTCHA, speziell ordnungsgemäß konzipierte server-side login Drosselung Schemata - werden wir diskutieren später.

Wissen, dass CAPTCHA-Implementierungen sind nicht erstellt gleich;Sie haben oft keine Menschen sind lösbar, die meisten von Ihnen sind tatsächlich unwirksam gegen bots, alle von Ihnen sind unwirksam gegen Billig Dritte-Welt-Arbeit (nach OWASP, die aktuellen sweatshop-rate ist $12 pro 500 tests), und einige Implementierungen technisch gesehen möglicherweise in einigen Ländern illegal (siehe OWASP-Authentifizierung Cheat Sheet).Wenn müssen Sie eine CAPTCHA, Google reCAPTCHA, da ist es OCR-hart-definition (da es bereits verwendet OCR-fehlerhaft-Buch-scans) und versucht sehr hart, um benutzerfreundlich sein.

Persönlich tendiere ich zu finden CAPTCHAS ärgerlich, und verwenden Sie Sie nur als letzten Ausweg, wenn ein Benutzer failed to log in, eine Reihe von Zeiten und Drosselung Verzögerungen ausgereizt sind.Dies geschieht selten genug, um akzeptiert zu werden, und es stärkt das system als ganzes.

Die Speicherung der Passwörter / Überprüfen von Anmeldungen

Dies kann schließlich wissen, nachdem alle die hoch-publizierten hacks und Benutzer-Daten-Lecks, die wir gesehen haben in den letzten Jahren, aber es muss gesagt werden:Speichern Sie keine Kennwörter im Klartext in Ihrer Datenbank.Benutzer-Datenbanken werden regelmäßig gehackt, geleakt oder gewonnen durch SQL-injection, und wenn Sie die Speicherung von raw -, nur-Text-Kennwörter,, dass ist sofortige game over für Ihre login-Sicherheit.

So wenn Sie können nicht speichern Sie das Kennwort ein, wie überprüfen Sie, dass der login+Passwort-Kombination Gebucht über das login-Formular ist das richtige?Die Antwort ist hashing mit einem key derivation Funktion.Wenn ein neuer Benutzer erstellt oder ein Passwort geändert wird, nehmen Sie das Passwort ein und führen Sie es durch eine KDF, wie Argon2, bcrypt, scrypt oder PBKDF2, drehen Sie das Klartext-Passwort ("correcthorsebatterystaple") in eine lange, zufällig aussehende Zeichenfolge, die ist viel sicherer in Ihrer Datenbank speichern.Um zu überprüfen, login, führen Sie den gleichen hash-Funktion auf der eingegebenen Kennwort diese Zeit vorbei, das Salz und vergleichen Sie die resultierende hash-string, um den Wert in Ihrer Datenbank gespeichert.Argon2, bcrypt und scrypt-store-salt-mit der hash bereits.Schauen Sie sich diese Artikel on sec.stackexchange für mehr detaillierte Informationen.

Der Grund, ein Salz verwendet wird, ist das hashing in allein reicht nicht aus-Sie 'll wollen zu fügen Sie einen so genannten "Salz" zu schützen, die gegen hash rainbow-Tabellen.Ein salt verhindert effektiv zwei Passwörter, die exakt so gespeichert werden, als die selben hash-Wert, verhindert die gesamte Datenbank gescannt wird, wird in einem Lauf, wenn ein Angreifer die Ausführung eines password guessing attack.

Eine kryptographische hash-sollte nicht verwendet werden für die Passwort-Speicherung, da Benutzer ausgewählte Passwörter sind nicht stark genug (D. H.nicht enthalten in der Regel genügend Entropie) und ein password guessing-Angriff abgeschlossen werden konnte in relativ kurzer Zeit von einem Angreifer mit Zugriff auf die hashes.Dies ist der Grund, warum KDFs verwendet werden - diese effektiv "Strecken Sie die Taste", was bedeutet, dass jedes Passwort erraten, ein Angreifer macht, bewirkt, dass mehrere Wiederholungen des hash-Algorithmus, zum Beispiel das 10.000-fache, wodurch die Angreifer, das Passwort zu raten 10.000 mal langsamer.

Session-Daten - "Sie sind angemeldet als Spiderman69"

Sobald der server überprüft hat, die login und Passwort gegen Ihre Benutzer-Datenbank und eine übereinstimmung gefunden, wird das system muss ein Weg, sich daran zu erinnern, dass der browser authentifiziert wurde.Diese Tatsache sollte immer nur gespeicherte server-Seite in den session-Daten.

Wenn Sie nicht vertraut sind mit session-Daten, hier ist, wie es funktioniert:Eine einzelne, zufällig generierte Zeichenfolge gespeichert wird in einer auslaufenden cookie verwendet, um den Verweis eine Sammlung von Daten, die session-Daten auf dem server gespeichert werden.Wenn Sie ein MVC-framework verwenden, ist dies zweifellos bereits behandelt.

Wenn möglich, stellen Sie sicher, dass der session-cookie secure-und HTTP-Nur flags gesetzt, wenn die an den browser gesendet.Das HttpOnly-flag bietet etwas Schutz vor den cookie ausgelesen wird, durch XSS-Angriff.Das secure-flag wird sichergestellt, dass das cookie wird nur dann gesendet zurück über HTTPS, und schützt daher gegen Netzwerk-sniffing-Attacken.Der Wert des Cookies sollte nicht vorhersagbar.Wo wird ein cookie verweisen auf eine nicht vorhandene Sitzung vorgestellt wird, dessen Wert sollte sofort ersetzt werden, um zu verhindern, dass session fixation.

TEIL II:Wie Bleibt Man Eingeloggt Ist - Den Berüchtigten "Remember Me" Checkbox

Persistent Login-Cookies ("remember me" - Funktionalität) sind eine Gefahr zone;auf der einen Seite, Sie sind ganz sicher wie konventionelle Anmeldungen, wenn die Benutzer wissen, wie mit Ihnen umzugehen;und auf der anderen Seite, Sie sind ein enormes Sicherheitsrisiko in den Händen von unachtsamen Benutzern, die Sie auf öffentlichen Computern und vergessen, sich abzumelden, und wer kann nicht wissen, was cookies sind oder wie Sie Sie löschen können.

Persönlich, ich mag persistent logins für websites, die ich regelmäßig Besuche, aber ich weiß, wie behandeln Sie Sie sicher auf.Wenn Sie sich sicher sind, dass Ihre Benutzer wissen, die gleiche, die Sie verwenden können persistent logins mit einem sauberen gewissen.Wenn nicht - nun, dann können Sie abonnieren die Philosophie, dass Benutzer, die sorglos mit Ihren Anmeldedaten brachte es auf sich selbst, wenn Sie gehackt.Es ist nicht so, wir gehen zu unserem Benutzers Häuser und reißen Sie alle diejenigen facepalm-induzierende Post-It-Notizen mit Passwörtern, die Sie gezeichnet haben, bis auf den Rand der Monitore, entweder.

Natürlich, einige Systeme nicht leisten können, zu haben alle Konten gehackt;für solche Systeme gibt es keine Möglichkeit, Sie zu rechtfertigen, dass persistent logins.

Wenn Sie sich entscheiden persistent login-cookies", dies ist, wie Sie es tun:

  1. Erste, nehmen Sie sich etwas Zeit zum Lesen Paragon Initiative Artikel auf das Thema.Sie müssen eine Reihe von Elementen, die rechts und der Artikel macht einen tollen job zu erklären, jeder.

  2. Und nur zu wiederholen, eine der häufigsten Fallstricke, VERSUCHEN SIE NICHT, DAS PERSISTENT LOGIN COOKIE (TOKEN) IN IHRER DATENBANK, DIE NUR EINEN HASH-WERT ES! Der login token-Passwort Entspricht, so dass, wenn ein Angreifer bekam Ihre Hände auf Ihre Datenbank, die Sie verwenden könnten, die Token zum anmelden eines Kontos, so als wären Sie Klartext-login-Passwort-Kombinationen.Verwenden Sie daher hashing (nach https://security.stackexchange.com/a/63438/5002 eine schwache hash tun gut für diesen Zweck) beim speichern der persistenten login-Token.

TEIL III:Mit Geheimen Fragen

Nicht Umsetzung der "geheimen Fragen".Die "geheimen Fragen" - Funktion ist eine Sicherheit anti-pattern.Lesen Sie die Zeitung von link-Nummer 4 aus der MUST-READ-Liste.Sie können Fragen Sie Sarah Palin etwa, dass man, nachdem Ihr Yahoo!E-Mail-Konto wurde gehackt, die bei einer früheren Präsidentschafts-Kampagne, weil die Antwort auf Ihre Sicherheitsfrage war..."Wasilla High School"!

Auch mit benutzerdefinierter Fragen, ist es sehr wahrscheinlich, dass die meisten Benutzer wählen, entweder:

  • Eine 'standard' geheime Frage, wie Mädchenname der Mutter oder die Lieblings pet

  • Ein einfaches Stück trivia, dass jemand anheben könnten, aus Ihrem blog, LinkedIn-Profil, oder ähnlich

  • Jede Frage ist leichter zu beantworten, als zu erraten, Ihr Passwort.Die, für die jeder anständige Passwort, ist in jeder Frage, die Sie sich vorstellen können

Abschließend Sicherheit Fragen sind von Natur aus unsicher in nahezu allen Formen und Variationen, und sollte nicht eingesetzt werden in ein Authentifizierungsschema für jede Grund.

Der wahre Grund, warum Fragen der Sicherheit, auch existieren in der wildnis ist, dass Sie bequem zu sparen die Kosten von ein paar support-Anrufe von Benutzern, die keinen Zugriff auf Ihre E-Mails zu erhalten, die eine Reaktivierung code.Dies auf Kosten der Sicherheit und Sarah Palin ' s Ruf.Lohnt sich das?Wahrscheinlich nicht.

TEIL IV:Passwort Vergessen Funktionalität

Ich habe bereits erwähnt, warum Sie sollten verwenden Sie niemals Sicherheit Fragen für den Umgang vergessene/verlorene Passwörter der Benutzer;es geht auch ohne sagen, dass Sie niemals e-mail-Benutzer Ihre aktuellen Passwörter.Es gibt mindestens zwei weitere häufige Fallstricke zu vermeiden, in dieses Feld ein:

  1. Nicht reset Passwort vergessen, um eine automatisch generierte starke Passwort - solche Passwörter sind notorisch schwer zu denken ist, sodass der Benutzer muss entweder ändern Sie es oder schreiben Sie es auf, sagen wir, auf einem gelben Post-It auf die Rand von Ihre monitor.Statt der Einstellung ein neues Passwort, lassen Sie die Benutzer wählen ein neues Recht Weg - was ist es, was Sie wollen zu tun sowieso.(Eine Ausnahme könnte sein, wenn die Nutzer sind universell mit einem Passwort-manager zum speichern/verwalten von Kennwörtern, die normalerweise würde nicht merken, ohne es zu schreiben down).

  2. Immer hash das verlorene Passwort-code/token in der Datenbank. WIEDER, dieser code ist ein weiteres Beispiel für ein Passwort Entspricht, so MUSS es zerlegt werden, die im Fall eines Angreifer bekam Ihre Hände auf Ihre Datenbank.Bei einem verlorenen Passwort-code angefordert wird, senden Sie den Text-code auf die Benutzer E-Mail-Adresse, hash, speichern Sie den hash in Ihrer Datenbank -- und werfen Sie die original -.Genau wie ein Passwort oder eine permanente login-token.

Ein letzter Hinweis:immer machen sicher, dass Ihre Schnittstelle für die Eingabe, die "verlorene Passwort-code' ist mindestens so sicher wie Ihre login-Formular selbst, oder ein Angreifer benutzen Sie einfach diesen Zugriff zu erlangen, statt.Machen Sie sicher, Sie erzeugen sehr lang 'verloren Passwort-Code (für Beispiel, 16 groß-und Kleinschreibung, alphanumerische Zeichen) ist ein guter Anfang, aber erwägen Sie die gleichen drosseln Schema, das Sie für das login-Formular selbst.

TEIL V:Überprüfung Der Kennwortsicherheit

Zunächst werden Sie wollen, Lesen Sie diesen kleinen Artikel für einen reality-check: Die 500 häufigsten Passwörter

Okay, also vielleicht ist die Liste nicht die kanonischen Liste der häufigsten Passwörter auf alle system immer und überall, aber es ist ein guter Indikator dafür, wie schlecht die Menschen wählen Ihre Passwörter, wenn es keine erzwungene Politik.Plus, die Liste sieht erschreckend nah an Zuhause, wenn man es im Vergleich zu öffentlich verfügbaren Analysen der kürzlich Passwörter gestohlen.

Also:Mit keine Mindest-Anforderungen an die Passwortsicherheit, 2% der Benutzer verwenden die top 20 der häufigsten Passwörter.Bedeutung:wenn ein Angreifer erhält nur 20 versuche, 1 in 50 Konten auf Ihrer website knacken.

Zu vereiteln dies erfordert die Berechnung der Entropie eines Passworts und dann die Anwendung einer Schwelle.Das National Institute of Standards and Technology (NIST) Special Publication 800-63 hat eine Reihe sehr guter Vorschläge.Dass, wenn kombiniert mit einem Wörterbuch und Tastatur-layout-Analyse (zum Beispiel 'qwertyuiop' ist ein Falsches Kennwort), können lehnen 99% der alle schlecht gewählte Passwörter auf einem Niveau von 18 bits der Entropie.Einfach die Berechnung der Stärke von Passwörtern und der zeigt eine visuelle Kraft meter einem user ist gut, aber nicht ausreichend.Es sei denn, es wird erzwungen, viele Benutzer werden wahrscheinlich ignorieren.

Und für eine erfrischende nehmen auf die Benutzer-Freundlichkeit von hoch-Entropie-Passwörter, Randall Munroe ' s Passwort Stärke xkcd ist sehr zu empfehlen.

Nutzen Troy Hunt ' s Habe ich Pwned API um zu überprüfen, Benutzer-Passwörter auf Passwörter ändern in der öffentlichen Daten Verstöße.

TEIL VI:Viel Mehr - Oder:Verhindert Eine Schnelle-Feuer Login-Versuche

Zunächst einmal muss ein Blick auf die zahlen: Passwort-Recovery-Geschwindigkeiten - Wie lange wird Sie Ihr Passwort aufstehen

Wenn Sie nicht die Zeit haben, sich durch die Tabellen in diesem link, hier ist die Liste von Ihnen:

  1. Es dauert praktisch keine Zeit knacken Sie ein schwaches Kennwort, auch wenn Sie knackten es mit einem abacus

  2. Es dauert praktisch keine Zeit knacken Sie eine alphanumerische 9-Zeichen-Kennwort, wenn es ist groß-und Kleinschreibung

  3. Es dauert praktisch keine Zeit zu knacken, Schling -, Symbole-und-Buchstaben-und-zahlen, groß-und Kleinbuchstaben Passwort, wenn es ist weniger als 8 Zeichen lang sein (ein desktop-PC suchen, der gesamte Schlüsselraum bis zu 7 Zeichen in einer Angelegenheit von Tagen oder sogar Stunden)

  4. Es wäre jedoch nehmen eine unglaubliche Menge an Zeit zu knacken sogar eine 6-Zeichen-Kennwort, wenn Sie nur ein Versuch pro Sekunde!

Also, was können wir lernen aus diesen zahlen?Gut, viele, aber konzentrieren wir uns auf die wichtigsten:die Tatsache, dass die Verhinderung der großen Anzahl von rapid-fire aufeinanderfolgenden login-versuche (dh.die brute-force Angriff) ist nicht wirklich so schwer.Aber verhindern, dass es rechts ist nicht so einfach, wie es scheint.

Im Allgemeinen haben Sie drei Möglichkeiten, die sind alle wirksam gegen brute-force-Angriffe (und dictionary-Angriffe, aber da Sie bereits mit einem starken Passwörter Politik, Sie sollte kein Problem sein):

  • Präsentieren CAPTCHA nach N Fehlversuchen (ärgerlich wie die Hölle, und oft unwirksam-aber ich wiederhole mich hier)

  • Das sperren von Konten und eine E-Mail-Prüfung nach N fehlgeschlagenen versuchen (das ist ein DoS Angriff warten, um zu geschehen)

  • Und schließlich, login Drosselung:, dass ist, die Einstellung der Verzögerung zwischen der versucht nach N fehlgeschlagenen versuchen (ja, DoS-Angriffe sind noch möglich, aber zumindest sind Sie weit weniger wahrscheinlich, und viel komplizierter, pull off).

Best practice #1: Mit einer kurzen Zeitverzögerung, die steigt mit der Anzahl der fehlgeschlagenen versuche, wie:

  • 1 gescheiterten Versuch = keine Verzögerung
  • 2 Fehlversuchen = 2 sec delay
  • 3 Fehlversuchen = 4 sec Verzögerung
  • 4 Fehlversuche = 8 sec Verzögerung
  • 5 Fehlversuchen = 16 sec Verzögerung
  • etc.

DoS-Angriff auf dieses Schema wäre sehr unpraktisch, da die daraus resultierenden Aussperrung Zeit ist etwas größer als die Summe der vorherigen lockout Zeiten.

Zu klären:Die Verzögerung ist nicht eine Verzögerung, bevor die Antwort an den browser.Es ist mehr wie ein timeout oder refraktären Periode, während der login-versuche auf ein bestimmtes Konto oder eine bestimmte IP-Adresse werden nicht akzeptiert oder ausgewertet überhaupt.Das heißt, die richtige Anmeldeinformationen werden nicht wieder in eine erfolgreiche Anmeldung und die falschen Anmeldeinformationen nicht ausgelöst wird, eine Verzögerung zu erhöhen.

Best practice #2: Eine mittlere Länge der Zeit Verzögerung,, dass geht in die Effekt nach N fehlgeschlagenen versuche, wie:

  • 1-4 Fehlversuche = keine Verzögerung
  • 5 Fehlversuchen = 15-30 min Verspätung

DoS-Angriff auf dieses Schema wäre ziemlich unpraktisch, aber sicherlich machbar.Außerdem ist es relevant zu beachten, dass eine so lange Verzögerung kann sehr lästig sein, für einen berechtigten Benutzer.Vergessliche Benutzer nicht mögen Sie.

Best practice #3: Die Kombination der zwei Ansätze - entweder in einer festen, kurzen zeitlichen Verzögerung, dass geht in Kraft nach N fehlgeschlagenen versuche, wie:

  • 1-4 Fehlversuche = keine Verzögerung
  • 5+ Fehlversuche = 20 sec Verzögerung

Oder, Zunehmender Verzögerung mit einer festen Obergrenze, wie:

  • 1 gescheiterten Versuch = 5 sec Verzögerung
  • 2 Fehlversuchen = 15 sec Verzögerung
  • 3+ Fehlversuche = 45 sec Verzögerung

Diese Letzte Regelung wurde von der OWASP-best-practices-Vorschläge (link 1 aus dem MUST-READ-Liste) und sollten als best practice gilt, auch wenn es zugegebenermaßen auf die restriktive Seite.

Als Faustregel gilt jedoch, würde ich sagen:je stärker Ihr Passwort ist Politik, die weniger haben Sie Fehler Benutzer mit Verzögerungen.Wenn Sie erfordern starken (groß- / Kleinschreibung alphanumerische Zeichen + benötigt, zahlen und Symbole) 9+ " - Zeichen-Passwörter, die Sie geben könnte die Benutzer 2-4 nicht-verzögert Passwort-versuche vor der Aktivierung der Drosselung.

DoS-Angriff auf das Letzte login-drosselungs-Regelung wäre sehr unpraktisch.Und als letzten touch, always allow persistent (cookie) Anmeldungen (und/oder einem CAPTCHA überprüft login-Formular) zu pass durch, so dass legitime Benutzer nicht einmal verzögert werden, während der Angriff ist im Gange.So, die sehr unpraktisch DoS-Angriff wird eine extrem unpraktisch Angriff.

Darüber hinaus macht es Sinn, mehr zu tun, aggressive Drosselung auf admin-accounts, da sind die meisten attraktiven Einstieg Punkte

TEIL VII:Verteilte Brute-Force-Angriffe

Nur so nebenbei, die mehr erweiterte die Angreifer werden versuchen, Sie zu umgehen login Drosselung durch "Verbreitung Ihrer Aktivitäten':

  • Die Verteilung der versuche auf ein botnet, um zu verhindern, dass die IP-Adresse Kennzeichnen

  • Eher als der Auswahl einer Benutzer und versuchen, den 50.000 häufigsten Passwörtern (Sie können nicht, weil unsere Drosselung), Sie holt DIE häufigste Passwort und versuchen Sie es gegen 50.000 Teilnehmer statt.Diese Weise nicht nur tun Sie get, um die maximale versuche, Maßnahmen wie CAPTCHAs und login-Drosselung, die Ihre chance auf Erfolg steigt auch, da die Nummer 1 der am häufigsten verwendeten Passwort ist weit wahrscheinlicher als die Anzahl 49.995

  • Abstand der login-Anforderungen für jedes Benutzerkonto, sagen wir, 30 Sekunden auseinander, schleichen sich unter dem radar

Hier ist die beste Praxis wäre Protokollierung die Anzahl der fehlgeschlagenen logins, system-wide, und mit einem Laufenden Durchschnitt von Ihre Website ist schlecht-login-Frequenz als basis für einen oberen Grenzwert, den Sie dann zu verhängen, die auf alle Benutzer.

Zu Abstrakt?Lassen Sie mich anders formulieren:

Sagen Sie Ihre Website hat einen Durchschnitt von 120 bad logins pro Tag über die vergangenen 3 Monate.Mit diesem (running average), könnte Ihr system set die Globale Beschränkung auf 3 times, -- ie.360 gescheiterten versuche, die über einen Zeitraum von 24 Stunden.Dann, wenn die Gesamtzahl der Fehlversuche über alle Konten übersteigt die Zahl innerhalb eines Tages (oder noch besser, überwachen Sie die Geschwindigkeit der Beschleunigung und der trigger auf eine berechnete Schwelle), es aktiviert die systemweite login-Drosselung - das bedeutet kurze Wartezeiten für ALLE Benutzer (immer noch, mit der Ausnahme von Cookies Anmeldungen und/oder backup-CAPTCHA-Anmeldungen).

Ich postete auch eine Frage mit mehr details und eine wirklich gute Diskussion darüber, wie das zu vermeiden ist schwierig pitfals in der Abwehr von verteilten brute-force-Angriffe

TEIL VIII:Zwei-Faktor-Authentifizierung und Authentifizierung Anbieter

Anmeldeinformationen kompromittiert werden kann, ob durch exploits, Passwörter aufgeschrieben und verloren, laptops mit Schlüssel gestohlen werden, oder Benutzer die Eingabe von logins in phishing-sites.Anmeldungen können weiter geschützt durch zwei-Faktor-Authentifizierung, die verwendet werden out-of-band Faktoren wie einmalcodes empfangen von anrufen, SMS-Nachricht, app oder dongle.Mehrere Anbieter bieten die zwei-Faktor-Authentifizierung services.

Die Authentifizierung kann vollständig delegiert, um einen single-sign-on-Dienst, wo andere Anbieter übernimmt sammeln von Anmeldeinformationen.Dieser schiebt das problem auf eine Vertrauenswürdige Dritte Partei.Google und Twitter bieten beide standards-basierten SSO-services, während Facebook bietet eine ähnliche proprietäre Lösung.

MUST-READ-LINKS Über die Web-Authentifizierung

  1. OWASP Leitfaden Für die Authentifizierung / OWASP-Authentifizierung Cheat Sheet
  2. Dos and Don ' TS of Client Authentication on the Web (sehr gut lesbar MIT der Forschung Papier)
  3. Wikipedia:HTTP cookie
  4. Persönliches wissen Fragen für die fallback-Authentifizierung:Fragen der Sicherheit in der ära von Facebook (sehr gut lesbar, Berkeley-Forschung Papier)

Andere Tipps

Definitive Artikel

Senden von Anmeldeinformationen

Die einzige praktische Möglichkeit zum senden von Anmeldeinformationen zu 100% sicher ist, indem SSL.Mit Hilfe von JavaScript hash das Passwort ist nicht sicher.Häufige Fehlerquellen für die client-Seite Passwort-hashing:

  • Wenn die Verbindung zwischen client und server unverschlüsselt ist, alles, was Sie tun, ist anfällig für einen man-in-the-middle-Angriffe.Ein Angreifer könnte ersetzen die eingehende javascript zu brechen, Vermischung oder senden Sie alle Anmeldeinformationen für Ihren server, Sie könnte hören zu Kunden Antworten und die Identität des Nutzer perfekt, etc.etc.SSL für Vertrauenswürdige Zertifizierungsstellen ist entworfen, um MitM-Angriffe zu verhindern.
  • Das gehashte Passwort vom server empfangen wird weniger sicher wenn Sie nicht zusätzliche, redundante arbeiten auf dem server.

Gibt es eine andere sichere Methode genannt SRP, aber es ist patentiert (obwohl es frei lizenzierte), und es gibt wenige gute Implementierungen verfügbar.

Die Speicherung von Passwörtern

Don ' T ever die Speicherung der Passwörter im Klartext in der Datenbank.Auch nicht, wenn Sie kümmern sich nicht um die Sicherheit Ihrer eigenen Website.Davon ausgehen, dass einige der Benutzer wiederverwenden wird, das Passwort von Ihrem online-Bankkonto ein.So speichern Sie die Hash-Kennwort ein, und werfen Sie die original -.Und stellen Sie sicher, dass das Kennwort nicht zeigen, bis in access-logs oder Anwendungsprotokolle.OWASP empfiehlt die Verwendung von Argon2 als erste Wahl für neue Anwendungen.Wenn diese nicht verfügbar ist, PBKDF2 oder scrypt sollte stattdessen verwendet werden.Und schließlich, wenn keine der oben genannten verfügbar ist, verwenden Sie bcrypt.

Hashes, die durch Sie selbst, sind auch unsicher.Zum Beispiel, identische Passwörter bedeuten identische hashes--das macht die hash-lookup-Tabellen ein effektiver Weg von Rissbildung viele Passwörter auf einmal.Speichern Sie stattdessen die gesalzen hash.Ein Salz ist eine Zeichenfolge angehängt wird, um das Passwort vor dem hashing - eine andere (zufällige) Salz pro Benutzer.Das Salz ist ein öffentlich-Wert, so dass Sie können speichern Sie Sie mit der hash in der Datenbank.Finden hier für mehr Informationen über dieses.

Dies bedeutet, dass Sie können nicht senden die Benutzer Ihre Passwörter vergessen (weil Sie nur die hash).Nicht das Kennwort des Benutzers zurücksetzen, es sei denn, Sie haben authentifiziert den Benutzer (Benutzer müssen nachweisen, dass Sie in der Lage sind zu Lesen, E-Mails, die an die gespeicherte (und validiert) E-Mail-Adresse.)

Fragen der Sicherheit

Sicherheit Fragen unsicher sind - vermeiden Sie verwenden.Warum?Alles eine Frage zur Sicherheit, eine Passwort wird besser.Lesen TEIL III:Mit Geheimen Fragen in @Jens Roland Antwort hier in diesem wiki.

Session-cookies

Nachdem der Benutzer sich anmeldet, sendet der server den Benutzer eine session-Cookies.Der server abrufen können den Benutzernamen oder die id aus dem cookie, aber niemand sonst erzeugen kann, die wie ein cookie (TODO erklären Mechanismen).

Cookies können übernommen werden:Sie sind nur so sicher wie der rest von der Maschine des Clients und andere Mitteilungen.Sie können vom Datenträger gelesen werden, schnupperte in den Netzwerkverkehr, gehoben durch eine cross-site-scripting-Angriff, phished von einem vergifteten DNS-so sendet der client cookies auf den falschen Servern.Senden Sie keine persistenten cookies.Sollten Cookies verfallen am Ende der client-Sitzung (browser schließen oder verlassen Ihre domain).

Wenn Sie wollen autologin Ihre Benutzer können Sie in einem dauerhaften cookie, aber es sollte sich unterscheiden von einem full-session-cookie.Sie können eine weitere Flagge, die der Benutzer automatisch angemeldet, und muss sich in für real für sensible Operationen.Dies ist sehr beliebt bei shopping-Websites, die wollen zu bieten Sie mit eine nahtlose, personalisierte shopping-Erlebnis, aber immer noch schützen Sie Ihre finanziellen details.Zum Beispiel, wenn Sie wieder zu besuchen Amazon, Sie Ihnen zu zeigen, eine Seite, die sieht aus wie du bist eingeloggt, aber wenn Sie gehen, um eine Bestellung (oder ändern Sie Ihre Lieferadresse, Kreditkarte etc.), Sie Fragen Sie zu bestätigen Ihr Kennwort ein.

Finanz-websites wie Banken und Kreditkarten, auf der anderen Seite, nur sensible Daten und sollten nicht zulassen, auto anmelden oder ein low-security-Modus.

Liste der externen Ressourcen

Zunächst eine starke Einschränkung, dass diese Antwort nicht die beste Lösung für diese genaue Frage.Es sollte auf jeden Fall nicht die top-Antwort!

Ich werde gehen Sie vor und erwähnen Mozilla schlug BrowserID (oder vielleicht genauer, der Verifizierte E-Mail-Protokoll), im Geist der Suche nach einer upgrade-Pfad zu besseren Ansätze zur Authentifizierung in die Zukunft.

Ich fasse es mal so:

  1. Mozilla ist eine gemeinnützige Organisation mit Werte ausgerichtet sind, sowie mit der Suche nach guten Lösungen für dieses problem.
  2. Die Realität heute ist, dass die meisten Webseiten verwenden form-based authentication
  3. Formular-basierte Authentifizierung hat einen großen Nachteil, die ein erhöhtes Risiko für phishing.Benutzer werden gebeten, vertrauliche Informationen eingeben, in ein Gebiet, das von einem remote gesteuert Entität, sondern als ein Gebiet unter der Kontrolle Ihrer User-Agent (browser).
  4. Da ein Browser implizit Vertrauenswürdige (die ganze Idee, ein User-Agent ist, zu handeln im Namen des Nutzers), Sie können helfen, diese situation verbessern.
  5. Die primäre Kraft, die wieder Fortschritte Bereitstellung deadlock.Lösungen müssen zerlegt werden, in Schritten, die inkrementellen nutzen, auf Ihre eigenen.
  6. Die einfachste dezentrale Methode, um eine Identität, die ist gebaut in die internet-Infrastruktur ist den domain-Namen.
  7. Als zweite Ebene zum Ausdruck, Identität, jede Domäne verwaltet seine eigenen Konten.
  8. Das Formular “Konto@Domäne" ist präzise und unterstützt durch eine Breite Palette von Protokollen und URI-Schemas.Solch ein Bezeichner ist, natürlich, allgemein anerkannt als ein E-Mail-Adresse.
  9. E-Mail-Anbieter sind bereits die de-facto-primary identity-Anbieter online.Aktuelles Kennwort zurücksetzen, fließt in der Regel lassen Sie Sie die Kontrolle über ein Konto, wenn Sie nachweisen können, dass Sie kontrollieren, dass-Konto verknüpften E-Mail-Adresse.
  10. Die Verifizierte E-Mail-Protokoll wurde vorgeschlagen, um eine sichere Methode, basierend auf öffentlichen Schlüsseln, die für die Rationalisierung des Prozesses beweisen zu Domäne B, die Sie haben ein Konto auf der Domäne A.
  11. Für Browser, die keine Unterstützung für die Verifizierte E-Mail-Protokoll (derzeit alle), Mozilla bietet eine shim implementiert das Protokoll im client-side JavaScript code.
  12. Für E-Mail-Dienste, die nicht unterstützen die Verifizierte E-Mail-Protokoll, das Protokoll ermöglicht es Dritten, zu handeln als vertrauenswürdiger Vermittler, zu behaupten, dass Sie überprüft haben ein Benutzer den Besitz eines Kontos.Es ist nicht wünschenswert, eine große Anzahl von solchen Dritten;diese Funktion ist nur dafür gedacht, um ein upgrade-Pfad, und es ist sehr bevorzugt, dass die E-Mail-Dienste bieten diese Behauptungen selbst.
  13. Mozilla bietet Ihren eigenen service zu handeln wie ein vertrauenswürdiger Drittanbieter.Service Provider (, dass ist, Vertrauende Parteien) die Umsetzung der Verifizierten E-Mail-Protokolls können wählen, um Vertrauen Mozilla Behauptungen oder nicht.Mozillas Dienst Benutzer überprüft Inhaber des Kontos mittels der üblichen senden Sie eine E-Mail mit einem Bestätigungs-link.
  14. Service Provider können bieten natürlich auch dieses Protokoll als eine option neben anderen Methode(N) der Authentifizierung, die Sie Ihnen anbieten könnten.
  15. Eine große Benutzeroberfläche nutzen gesucht, hier ist die "Identität selector".Wenn ein Benutzer eine Website besucht und beschließt, zu authentifizieren, Ihr browser zeigt Ihnen eine Auswahl von E-Mail-Adressen ("persönlich", "Arbeit", "politischer Aktivismus", etc.) Sie können zu identifizieren, die sich auf der Website.
  16. Ein weiterer großer Benutzeroberfläche nutzen angestrebt, die als Teil dieser Bemühungen ist helfen Sie die browser wissen, mehr über die Benutzer-session – wer Sie sind angemeldet als derzeit in Erster Linie – so kann es angezeigt, die im browser chrome.
  17. Aufgrund der verteilten Natur von diesem system, die vermeidet lock-in zu großen Websites wie Facebook, Twitter, Google, etc.Jeder kann eigene domain und wirken daher als Ihre eigenen identity provider.

Dies ist nicht unbedingt "Formular-basierte Authentifizierung für websites".Aber es ist eine Anstrengung, um den übergang von der aktuellen norm von Formular-basierte Authentifizierung etwas sicherer:browser-unterstützt Authentifizierung.

Ich dachte nur, ich würde teilen Sie diese Lösung, die ich gefunden habe gut funktioniert.

Ich nenne es die Dummy-Feld (allerdings habe ich nicht erfunden, so don ' T credit me).

In kurz:Sie müssen nur fügen Sie dies in Ihr <form> und überprüfen Sie es leer sein, wenn die Validierung:

<input type="text" name="email" style="display:none" />

Der trick ist zu täuschen, einen bot zu denken, es hat zum einfügen von Daten in ein erforderliches Feld, das ist, warum ich den Namen der Eingang, "E-Mail".Wenn Sie bereits ein Feld namens E-Mail, die Sie verwenden, sollten Sie versuchen, die Benennung der dummy-Feld etwas anderes wie "Firma", "Telefon" oder "Email-Adresse".Wählen Sie einfach etwas, das Sie wissen, dass Sie nicht brauchen, und was sich anhört wie etwas, das man normalerweise finden würde logisch zu füllen, die in ein web-Formular.Jetzt verstecken die input Feld mit CSS-oder JavaScript - /jQuery - was auch immer Ihnen am besten passt - einfach nicht stellen Sie den input - type zu hidden oder sonst der bot nicht für Sie fallen.

Wenn Sie die Validierung der form (entweder client oder server-Seite) überprüfen Sie, ob Ihre dummy-Feld ausgefüllt wurde, um festzustellen, ob es gesendet wurde, indem ein Mensch oder ein bot ist.

Beispiel:

Im Falle eines Menschen: Die Benutzer werden nicht sehen, das dummy-Feld (in meinem Fall mit dem Namen "E-Mail") und wird nicht versuchen, ihn zu füllen.Also der Wert der dummy-Feld sollte noch leer sein, wenn das Formular gesendet wurde.

Im Falle des bot: Der bot erscheint ein Feld, dessen Typ text und einen Namen email (oder was auch immer es ist, dass Sie es nannte) und wird logischerweise versuchen, um ihn zu füllen mit geeigneten Daten.Es kümmert sich nicht, wenn Sie stylte die input-form mit etwas Phantasie CSS, web-Entwickler tun es die ganze Zeit.Was auch immer der Wert in das dummy-Feld ist, wir kümmern uns nicht, solange es größer als 0 Zeichen.

Ich benutzte diese Methode für ein Gästebuch, in Kombination mit CAPTCHA, und ich habe nicht gesehen, eine einzige spam-post da.Ich hatte mich für eine CAPTCHA-Lösung vor, aber schließlich kam es etwa fünf spam-Einträge pro Stunde.Das hinzufügen des dummy-Feld in der form aufgehört hat (zumindest bis jetzt) alle die spam von erscheinen.

Ich glaube, dies kann auch verwendet werden, nur fein und mit einem login/Authentifizierung form.

Warnung:Natürlich ist diese Methode nicht 100% narrensicher.Bots können so programmiert werden, ignorieren Eingabefelder mit Stil display:none angewendet, um es.Sie müssen auch darüber nachdenken, Menschen, die irgendeine form der auto-Vervollständigung (wie die meisten Browser haben einen eingebauten!) auto-füllen Sie alle Formular-Felder für Sie.Sie könnte genauso gut abholen ein dummy-Feld.

Sie können auch variieren, dies ein wenig, indem Sie das dummy-Feld sichtbar, aber außerhalb der Grenzen der Bildschirm, aber dies ist völlig bis zu Ihnen.

Seien Sie kreativ!

Ich glaube nicht, dass die obige Antwort "falsch" ist, aber es gibt große Bereiche der Authentifizierung, die nicht angeschnitten werden (oder eher die Betonung auf "so zu implementieren cookie-Sitzungen", nicht auf "welche Optionen gibt es und was sind die trade-offs".

Meine vorgeschlagenen änderungen/Antworten

  • Das problem liegt eher in der Konto-setup als Passwort-überprüfung.
  • Die Verwendung von zwei-Faktor-Authentifizierung ist sicherer als cleverer Passwort-Verschlüsselung
  • Versuchen Sie NICHT, zu implementieren Ihre eigenen login-form oder eine Datenbank-Speicherung von Passwörtern, es sei denn, die gespeicherten Daten wertlos ist, bei der Konto-Erstellung und selbst generiert (also web-2.0-Stil, wie Facebook, Flickr, etc.)

    1. Digest-Authentifizierung ist eine auf standards basierenden Ansatz unterstützt alle gängigen Browser und Server, das wird nicht senden Sie ein Passwort über einen sicheren Kanal.

Dies vermeidet die Notwendigkeit zu haben, "Sessions" (Sitzungen oder cookies als der browser selbst wird re-verschlüsseln der Kommunikation jedes mal.Es ist die "lightweight" - Konzept.

Allerdings glaube ich das nicht empfehlen, außer für die öffentlichkeit, low-value services.Dies ist ein Problem mit einigen der anderen Antworten oben - versuchen Sie nicht, eine re-Implementierung von server-side authentication mechanisms - dieses problem wurde gelöst und wird unterstützt von den meisten gängigen Browsern.Verwenden keine cookies.Speichern Sie nicht alles in der eigenen hand-rolled Datenbank.Fragen Sie einfach, pro Anfrage, wenn die Anforderung authentifiziert ist.Alles andere sollte unterstützt werden, indem die Konfiguration und Dritte-party software vertrauenswürdig.

So ...

Erste, wir sind verwirrend die Erstellung eines Kontos (mit Kennwort) mit der re-überprüfen der Passwort anschließend.Wenn ich bin Flickr und erstellen Sie Ihre Website zum ersten mal der neue Benutzer hat Zugriff auf den Wert null (leere web-space).Ich wirklich nicht Sorge, wenn die person, die das Konto Lügen über Ihren Namen.Wenn ich ein Konto erstellen des Krankenhaus-intranet/extranet, liegt der Wert in alle medizinischen Aufzeichnungen, und so habe ich do die Sorge um die Identität (*) den account creator.

Dies ist die sehr sehr schwer Teil.Die nur anständige Lösung ist ein web-of-trust.Für Beispiel, verbinden Sie das Krankenhaus als Arzt.Erstellen Sie ein web-Seite gehostet irgendwo mit Ihrem Foto, Ihre Passnummer und einen öffentlichen Schlüssel, hash, der Sie alle mit dem privaten Schlüssel.Dann besuchen Sie das Krankenhaus und der system-administrator sieht in Ihrem Reisepass, herauszufinden, ob das Foto passt, und dann zerhackt die Seite/Foto-hash mit dem Krankenhaus private key.Von nun an können wir den sicheren Austausch von Schlüsseln und tokens.Wie kann jemand, der vertraut Krankenhaus (das ist die geheime Zutat BTW).Der system-administrator kann Ihnen auch ein RSA dongle oder andere zwei-Faktor-Authentifizierung.

Aber das ist ein Menge von einem Streit sein, und nicht sehr web 2.0.Jedoch, es ist der einzig sichere Weg, um neue Konten zu erstellen, die Zugang zu wertvollen Informationen, die nicht selbst erstellt werden.

  1. Kerberos SPNEGO - single-sign-on-Mechanismen mit einer "trusted third party" - im Grunde der Benutzer überprüft gegen eine Vertrauenswürdige Dritte Partei.(Dies ist nicht in irgendeiner Weise, die nicht zu trauen OAuth)

  2. SRP - Art clevere Passwort-Authentifizierung ohne eine Vertrauenswürdige Dritte Partei.Aber hier sind wir immer in die Bereiche von "es ist sicherer mit zwei-Faktor-Authentifizierung, auch wenn das teurer"

  3. SSL client-Seite - geben Sie dem Kunden ein Zertifikat für öffentliche Schlüssel (unterstützt in allen gängigen Browsern - wirft aber Fragen über client-Maschine Sicherheit).

In das Ende, es ist eine Abwägung, was ist die Kosten von eine Sicherheit Verletzung vs die Kosten für die Durchführung sicherer Ansätze.Eines Tages können wir sehen, eine richtige PKI weithin akzeptiert und so nicht mehr selbst gerollt-Authentifizierung, Formulare und Datenbanken.Eines Tages...

Beim hashing, nicht verwenden schnelle hash-algorithmen wie MD5 (viele hardware-Implementierungen vorhanden).Verwenden Sie so etwas wie SHA-512.Für Passwörter, langsamer hashes sind besser.

Je schneller Sie erstellen können hashes, die schneller alle brute-force-checker arbeiten können.Langsamer hashes daher verlangsamen brute Force.Eine langsame hash-Algorithmus wird brute Force unpraktisch für längere Kennwörter (8 Ziffern +)

Einen guten Artikel über realistische Passwort-Stärke-Schätzung ist:

Dropbox Tech Blog » Blog Archive » zxcvbn:realistische Einschätzung der Stärke von Passwörtern

Meine Lieblings-Regel in Bezug auf die Authentifizierung von Systemen:die Verwendung von Passphrasen, keine Passwörter.Leicht zu merken, schwer zu knacken.Mehr info: Coding Horror:Passwörter vs.Passphrasen

Ich möchte noch hinzufügen, ein Vorschlag, den ich verwendet habe, basiert auf der Verteidigung in der Tiefe.Sie brauchen nicht auf die gleiche auth&auth-system für Administratoren als normale Benutzer.Sie kann über einen separaten login-Formular über eine separate url Ausführung separaten code für Anfragen gewähren hohe Privilegien.Dies kann man Entscheidungen, wäre ein totaler Schmerz, die normalen Benutzern.Eine, so dass ich verwendet habe, ist tatsächlich klettern die login-URL für den admin-Zugang und E-Mail-admin die neue URL.Stoppt alle brute-force-Angriff sofort, wie Ihre neue URL kann beliebig schwierig (sehr lange zufällige Zeichenfolge), aber Ihre admin-Benutzer der einzige Nachteil ist einen link in Ihrer E-Mail.Der Angreifer nicht mehr weiß, wo sogar per POST zu.

Ich dont ' T wissen, ob es am besten war es, diese zu beantworten, als eine Antwort oder als Kommentar.Ich entschied mich für die erste option.

Hinsichtlich der in poing TEIL IV:Passwort Vergessen Funktionalität in der ersten Antwort, ich würde einen Punkt, um Timing-Attacken.

In der An Ihr Passwort erinnern Formen, kann ein Angreifer überprüfen Sie eine vollständige Liste der E-Mails und erkennen, die registriert sind, um das system hat (siehe link weiter unten).

Über die Passwort-Vergessen-Formular, ich möchte hinzufügen, dass es eine gute Idee, gleich mal zwischen erfolgreichen und unsucessful Anfragen mit etwas Verzögerung Funktion.

https://crypto.stanford.edu/~dabo/papers/webtiming.pdf

Ich möchte hinzufügen, eine sehr wichtige Bemerkung:-

  • "In einem corporate, intra- die Netto-Einstellung," die meisten, wenn nicht alle der genannten möglicherweise nicht gelten!

Viele Unternehmen bereitstellen "nur interne Verwendung" websites, die effektiv die "corporate-Anwendungen", die zufällig wurden implementiert durch URLs.Diese URLs können (angeblich ...) nur gelöst werden, in der "internen Netzwerk". (Die Netzwerk-magisch umfasst alle VPN-Verbindung " road warriors.')

Wenn ein Nutzer ist pflichtbewusst-verbunden mit der vorgenannten Netzwerk, Ihre Identität ("Authentifizierung") ist [schon ...] "abschließend bekannt," wie ist Ihre Erlaubnis ("authorization") um bestimmte Dinge zu tun ...wie ..."um auf diese website zugreifen."

Dieser "Authentisierung + authorization" - service können zur Verfügung gestellt werden durch verschiedene Technologien, wie LDAP (Microsoft OpenDirectory), oder Kerberos.

Von Ihrem point-of-view -, Sie einfach wissen, diese:dass jemand die berechtigterweise wind-up auf Ihrer website muss begleitet werden durch [eine environment-variable magisch mit ...] ein "token." (d.h. Das fehlen eines solchen Tokens muss sofort Gründe für die 404 Not Found.)

Der token-Wert macht keinen Sinn für Sie, aber, sollte sich die Notwendigkeit ergeben, "geeignete Mittel vorhanden sind", durch die Ihre website kann "[maßgeblich] jemanden Fragen, der weiß (LDAP...etc.)" über alle und jedes(!) Frage, die Sie haben können.In anderen Worten, Sie tun nicht profitieren auch Sie von alle "home-grown-Logik." Stattdessen, Sie Fragen Der Autorität und implizit vertraue seinem Urteil.

Uh huh ...es ist ganz ein mental-switch aus der "wild und wooly Internet."

Verwenden OpenID Connect oder User-Managed Access.

Nichts ist effizienter, als es nicht zu tun überhaupt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top