Authentifizierungsmodell einer Javascript-App mit Ajax

Dies ist keine Frage, die sich speziell auf einige JavaScript-Details bezieht, aber ich suche nach einer Bestätigung, dass das von mir erstellte Modell keine offensichtlichen Lücken aufweist. Ich habe mich dazu entschlossen, eine eigene Authentifizierungsroutine zu erstellen (abgesehen von der Verwendung von bcrypt für das Hashing im Backend), die wie folgt funktioniert:

Benutzer (Browser oder von phonegap erstellte native App) meldet sich an> Json-Objekt, das mit jQuery ajax an ein Backend gesendet wurde, das bcrypt verwendet, um das Kennwort zu verarbeiten und die Kennwort-Benutzerprofildaten zu speichernDas Backend generiert und speichert mit der Client-IP-Adresse einen Token, den es zurückgibt (zufälliger Hash, wie / dev / urandom).Das jQuery-Plugin speichert das Token in einem lokalen CookieWenn eine Anfrage gemacht wird (Posten, Kommentieren, was auch immer, aber nicht zu oft), erhält sie das Token vom Cookie und fügt es dem JSON hinzu und postet es erneut mit AjaxDas Backend prüft, ob das Token existiert und nicht abgelaufen ist (gültig für 7 Tage), prüft, ob die IP-Adresse dieselbe ist und wenn ok, überprüft es die JSON-Daten der Anfrage und verarbeitet die AnfrageWenn ein Token abgelaufen ist, wird ein Anmeldebildschirm angezeigt, und die Anmeldeinformationen werden als Ajax veröffentlicht. Ein neues Token wird wie in Schritt 2 erstellt.

Alles läuft über SSL für Ajax-Anfragen und es werden nirgendwo Passwörter gespeichert. Es gibt auch einen Mechanismus, der überprüft, ob Brute-Force-Token-Spam die Quell-IP vorübergehend blockiert, wenn der Schwellenwert überschritten wird. Dies ist keine Hochsicherheits-App, aber Sie möchten die Benutzerdaten respektieren und sicherstellen, dass sie "sicher genug" sind.

Ich hoffe, dass die Frage qualifiziert ist, obwohl sie nicht spezifisch ist, und als Referenz für eine andere Person dient, wenn dadurch eine Diskussion ausgelöst wird. Ich konnte keine Best-Practice-Tutorials zu diesem speziellen Ansatz finden.

UPDATE: Der Authentifizierungsmechanismus wurde gemäß dem erhaltenen Feedback aktualisiert, da er für eine nicht kritische Webanwendung als "sicher genug" erscheint.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage