5511 Stimmen

Der endgültige Leitfaden zur formularbasierten Website-Authentifizierung

Anmerkung des Moderators:

Diese Frage eignet sich nicht für unser Frage- und Antwortformat mit dem Aktualitätsregeln die derzeit für Stack Overflow gelten. Normalerweise verwenden wir eine "historische Sperre" für solche Fragen, bei denen der Inhalt immer noch einen Wert hat. Die Antworten auf diese Frage werden jedoch aktiv gepflegt und eine historische Sperre erlaubt keine Bearbeitung der Antworten. Daher wurde eine "Wiki-Antwort"-Sperre eingerichtet, damit die Antworten bearbeitet werden können. Sie sollten davon ausgehen, dass die Aktualitätsprobleme, die normalerweise durch eine historische Sperre behandelt werden, vorhanden sind (d.h. diese Frage ist kein gutes Beispiel für eine themenbezogene Frage für Stack Overflow).

Formularbasierte Authentifizierung für Websites

Wir sind der Meinung, dass Stack Overflow nicht nur eine Ressource für sehr spezifische technische Fragen sein sollte, sondern auch für allgemeine Anleitungen, wie man Variationen von häufigen Problemen lösen kann. "Formularbasierte Authentifizierung für Websites" sollte ein gutes Thema für ein solches Experiment sein.

Sie sollte Themen wie z. B.:

  • Wie man sich anmeldet
  • Wie man sich abmeldet
  • So bleiben Sie eingeloggt
  • Verwaltung von Cookies (einschließlich empfohlener Einstellungen)
  • SSL/HTTPS-Verschlüsselung
  • Passwörter speichern
  • Geheime Fragen verwenden
  • Funktion für vergessenen Benutzernamen/Passwort
  • Verwendung von nonces zu verhindern Cross-Site-Request-Forgeries (CSRF)
  • OpenID
  • Kontrollkästchen "Mich erinnern"
  • Automatische Vervollständigung von Benutzernamen und Kennwörtern im Browser
  • Geheime URLs (öffentlich URL geschützt durch digest)
  • Überprüfung der Passwortstärke
  • E-Mail-Validierung
  • und vieles mehr über formularbasierte Authentifizierung ...

Sie sollte keine Dinge wie:

  • Rollen und Befugnisse
  • HTTP-Basisauthentifizierung

Bitte helfen Sie uns:

  1. Vorschlagen von Unterthemen
  2. Einreichung guter Artikel zu diesem Thema
  3. Bearbeitung der offiziellen Antwort

54 Stimmen

Warum wird die HTTP-Basisauthentifizierung ausgeschlossen? Sie kann in HTML-Formularen über Ajax funktionieren: peej.co.uk/artikel/http-auth-mit-html-formularen.html

56 Stimmen

HTTP Basic Auth hat die Eigenschaft, dass es (vergleichsweise) schwierig ist, einen Browser zum Vergessen zu bringen. Es ist auch furchtbar unsicher, wenn Sie es nicht mit SSL verwenden, um die Verbindung zu sichern (d. h. HTTPS).

24 Stimmen

Ich denke, es lohnt sich, über Sitzungen (einschließlich Fixierung und Hijacking), Cookies (die Flags secure und http only) und HTTP-basiertes SSO zu sprechen.

60voto

josh Punkte 1

Beim Hashing sollten Sie keine schnellen Hash-Algorithmen wie MD5 verwenden (es gibt viele Hardware-Implementierungen). Verwenden Sie etwas wie SHA-512. Für Passwörter sind langsamere Hashes besser.

Je schneller Sie Hashes erstellen können, desto schneller kann ein Brute-Force-Checker arbeiten. Langsamere Hashes verlangsamen daher Brute-Forcing. Ein langsamer Hash-Algorithmus macht Brute-Forcing für längere Passwörter (8 Ziffern und mehr) unpraktisch.

57voto

pixeline Punkte 17409

Meine Lieblingsregel in Bezug auf Authentifizierungssysteme: Verwenden Sie Passphrasen, keine Passwörter. Leicht zu merken, schwer zu knacken. Mehr Informationen: Codierungs-Horror: Passwörter vs. Passphrasen

33voto

Iain Duncan Punkte 1694

Ich möchte einen Vorschlag hinzufügen, den ich auf der Grundlage von "Defense in Depth" verwendet habe. Sie müssen nicht dasselbe Authentifizierungssystem für Admins wie für normale Benutzer haben. Sie können ein separates Anmeldeformular auf einer separaten URL haben, das separaten Code für Anfragen ausführt, die hohe Privilegien gewähren. Damit kann man Entscheidungen treffen, die für normale Benutzer völlig umständlich wären. Ich habe zum Beispiel die Anmelde-URL für den Administrator-Zugang verschlüsselt und dem Administrator die neue URL per E-Mail geschickt. Damit werden Brute-Force-Angriffe sofort unterbunden, da die neue URL beliebig schwierig sein kann (eine sehr lange, zufällige Zeichenkette), aber die einzige Unannehmlichkeit für den Administrator besteht darin, einem Link in seiner E-Mail zu folgen. Der Angreifer weiß nicht mehr, wohin er überhaupt POSTen soll.

22voto

user9869932 Punkte 5353

Ich weiß nicht, ob es am besten war, dies als Antwort oder als Kommentar zu beantworten. Ich habe mich für die erste Option entschieden.

Bezüglich des Gedichtes TEIL IV: Funktion für vergessene Passwörter In der ersten Antwort würde ich einen Punkt über Timing-Attacken ansprechen.

In der Ihr Passwort merken Formularen könnte ein Angreifer möglicherweise eine vollständige Liste von E-Mails überprüfen und feststellen, welche im System registriert sind (siehe Link unten).

Bezüglich des Formulars "Passwort vergessen" möchte ich hinzufügen, dass es eine gute Idee ist, die Zeiten zwischen erfolgreichen und nicht erfolgreichen Abfragen mit einer Verzögerungsfunktion auszugleichen.

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

20voto

Mike Robinson Punkte 7892

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

  • "In einem Unternehmen, . net setting", trifft das meiste, wenn nicht alles, was oben gesagt wurde, nicht zu!

Viele Unternehmen setzen Websites ein, die "nur für den internen Gebrauch" bestimmt sind, d. h. "Unternehmensanwendungen", die über URLs implementiert wurden. Diese URLs können (vermeintlich ...) nur innerhalb des "internen Netzwerks des Unternehmens" gelöst werden. (Zu diesem Netzwerk gehören auf magische Weise alle VPN-verbundenen "Road Warriors").

Wenn ein Nutzer pflichtgemäß mit dem oben genannten Netz verbunden ist, wird seine Identität ("Authentifizierung") ist [bereits ...] "schlüssig bekannt", ebenso wie ihre Erlaubnis ("Genehmigung") um bestimmte Dinge zu tun ... wie zum Beispiel ... "um auf diese Website zuzugreifen".

Dieser "Authentifizierungs- und Autorisierungsdienst" kann durch verschiedene Technologien bereitgestellt werden, wie z. B. LDAP (Microsoft OpenDirectory) oder Kerberos.

Von Ihrem Standpunkt aus wissen Sie nur dies: dass jeder die legitimerweise auf Ihrer Website landen muss von [einer Umgebungsvariablen, die auf magische Weise ...] ein "Token" enthält, begleitet werden. ( d.h. Das Fehlen eines solchen Zeichens muss ein unmittelbarer Grund sein für 404 Not Found .)

Der Wert des Tokens ergibt für Sie keinen Sinn, sondern, Falls erforderlich, gibt es "geeignete Mittel", mit denen Ihre Website "jemanden, der sich auskennt (LDAP... usw.)", über alle und jeder(!) Frage, die Sie vielleicht haben. Mit anderen Worten, Sie tun no in Anspruch nehmen cualquier "hausgemachte Logik". Stattdessen fragen Sie bei der Behörde nach und vertrauen stillschweigend auf deren Urteil.

Uh huh ... es ist ziemlich eine mentale Abkehr vom "wilden Internet".

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X