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:
- Vorschlagen von Unterthemen
- Einreichung guter Artikel zu diesem Thema
- 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.
2 Stimmen
Key Stretching zur Verringerung von Wörterbuchangriffen, wenn Ihre Passwörter komprimiert sind - de.wikipedia.org/wiki/Schlüssel_Verstärkung
29 Stimmen
Die super-nützliche
HttpOnly
Cookie-Flag, das den JavaScript-basierten Cookie-Diebstahl (eine Untergruppe von XSS-Angriffen) verhindert, sollte ebenfalls irgendwo erwähnt werden.5 Stimmen
Wir sollten vielleicht einen Best-Practices-Tag oder etwas Ähnliches für ausgezeichnete Fragen und Antworten wie diese einführen.
6 Stimmen
Ich stimme für die Schließung, weil ich glaube, dass diese Frage in ihrer jetzigen Form nicht in das SO-Format passt. Eine lange Antwort, die von allen bearbeitet wird, scheint einfach falsch zu sein. Stattdessen würde ich sie umformatieren in kleine nützliche Häppchen wie bei dieser Frage (am meisten hochgestimmte Frage zu Programmers).
81 Stimmen
Wow. Ausführliche Antworten, Dutzende von Bewertungen für einige von ihnen, aber niemand erwähnt den häufigen Fehler der Bereitstellung von Anmeldeformularen über HTTP. Ich habe mich sogar mit Leuten gestritten, die sagten "aber es wird an https:// übermittelt..." und nur leere Blicke ernteten, als ich fragte, ob sie sicher seien, dass ein Angreifer die unverschlüsselte Seite, über die das Formular übermittelt wurde, nicht umgeschrieben hat.
0 Stimmen
Guter Punkt @dzuelke, ganz zu schweigen davon, dass der Nutzer keine direkte Möglichkeit hat, zu überprüfen, ob seine sensiblen Daten über eine sichere Verbindung an einen vertrauenswürdigen Server übertragen werden (ich meine die Überprüfung des Server-Zertifikats)
0 Stimmen
github.com/FallibleInc/security-guide-for-developers ist eine gute Referenz
1 Stimmen
Es gibt einen Vorschlag, die Frage in die SO-Dokumentation zu verschieben meta.stackoverflow.com/questions/332092/
0 Stimmen
Wie sieht es mit dem Zeitaufwand aus, der für das Ausfüllen des Formulars benötigt wird? Man sollte einige Nachforschungen anstellen, eine Website für Bots wie Fleisch vorlegen und die Zeit beobachten, die zum Ausfüllen und Absenden des Formulars benötigt wird. Sie sollte unter einer Sekunde liegen. Dann beobachtet man, wie lange menschliche Nutzer brauchen. Nehmen Sie einfach den Durchschnitt oder führen Sie eine Bayes-Klassifizierung durch, um den einen vom anderen zu unterscheiden...
1 Stimmen
@ChrisPillen Eine Zeit lang konnte man erkennen, ob es sich bei einem Nutzer um einen Bot handelte, weil ein Bot, wenn er auf eine Eingabetaste klickt, erst gerade nach unten und dann gerade nach oben ging. Menschen bewegen sich natürlich in seltsamen, pseudo-zufälligen diagonalen Linien. Die Bot-Autoren reagierten darauf, indem sie ihre Bots in seltsamen, pseudo-zufälligen diagonalen Linien laufen ließen. Wenn Sie Ihre Website so programmieren können, dass sie ein bestimmtes Verhalten erwartet, kann jemand seinen Bot so programmieren, dass er sich so verhält; das ist einfach ein Wettrüsten. Es ist viel besser, sich auf Dinge zu verlassen, die für Computer nachweislich nicht durchführbar sind.
0 Stimmen
@LordFarquaad Ich verstehe das. Aber das bedeutet, dass es eine Reihe von Bot-Schreibern gibt, die sich nicht die Mühe machen. Und Zeit ist etwas Besonderes. Denn der Botautor muss Zeitschleifen einbauen. Das bedeutet, dass Bot-Autoren mehr Zeit brauchen, um ihre Bots laufen zu lassen. Was in einigen Fällen ihr Geschäftsmodell zerstören wird.
0 Stimmen
@Chris Die Teile VI und VII der oberen Antwort befassen sich mit der Drosselung, so dass die Zeit in jedem Fall beeinflusst wird. Ich will damit sagen, dass die Berechnung einer Zahl, die ein Mensch wahrscheinlich nicht schlagen kann, gegen eine der Sicherheitsgrundlagen verstößt, nämlich dass man nicht versuchen sollte, einen Bot zu "überlisten". Es stimmt zwar, dass man die meisten Bots schlagen kann, wenn man clever genug ist, aber wenn man sich auf ein solches Wettrüsten einlässt, bedeutet das in der Regel, dass man irgendwo anders einen grundlegenden Fehler hat. Es ist viel besser, diese Schwachstelle zu beseitigen, als zu versuchen, immer einen Schritt voraus zu sein, denn früher oder später wird ein Bot Sie ausstechen, und das muss er nur einmal tun.
0 Stimmen
Die Lektüre macht zwar Spaß, aber das Thema ist in der Tat zu weit gefasst. Sicherheit ist ein Katz-und-Maus-Spiel. Hacker finden ständig neue Lücken, die durch neue Sicherheitsmaßnahmen gestopft werden, und umgekehrt. In den Antworten noch nicht erwähnt: Verhaltenskontrollen. So wird z. B. Google hin und wieder nach Ihrem Passwort fragen, vor allem, wenn Sie unerwartete Dinge tun. Das Gleiche gilt für kontaktlose Bankkarten, wenn Sie in einem Geschäft oder einer Stadt bezahlen, in der Sie noch nie gesehen wurden.