2016-06-17 2 views
1

Ich benutze Ember, um eine Web-UI für eine Site zu schreiben, für die sich der Benutzer anmelden muss. Angenommen, der Browser hat einige Cookies von der letzten Anmeldung eines Benutzers gespeichert. Jetzt besucht der Benutzer die Site erneut. Ist es also eine sichere und übliche Möglichkeit für ember, den Benutzer basierend auf dem Cookie des letzten Besuchs automatisch einzuloggen? Wenn ja, auf welche Weise können Sie das umsetzen? (Ich kann nichts von Google finden.) Außerdem, wie erstelle ich den Cookie bei der Anmeldung? Ist es eine gebräuchliche Art, im Cookie eine Benutzer-ID, einen Passwort-Hash und eine Ablaufzeit anzugeben?Ist es eine sichere Möglichkeit, wiederkehrende Benutzer in Glut zu behandeln?

Darüber hinaus werden alle Referenzen zu diesem Thema sehr geschätzt.

Edit 1
Im Lichte der Vohuman Antwort, ich glaube, ich kann meine Frage etwas präziser machen. Grundsätzlich möchte ich eine allgemeine und sichere Implementierung kennen, mit der ein Benutzer angemeldet bleibt, auch wenn er den Browser schließt und erneut öffnet. Die Lebensdauer liegt nämlich außerhalb des Sitzungsbereichs. Nimm zum Beispiel linkedin. Wenn Sie eingeloggt sind und den Browser verlassen. Beim nächsten Besuch von linkedin sind Sie immer noch automatisch angemeldet. Gerade jetzt, was ich mir vorstellen kann, ist eine Lösung wie die folgende.

Wenn Sie sich zum ersten Mal bei der Site anmelden, gibt der Server einen Cookie zurück, der ein Authentifizierungshash-Token enthält. Wenn Sie das nächste Mal die Site erneut besuchen, erhält der Server das Hash-Token und authentifiziert somit Ihre Sitzung.

Also, ist über dem Fluss im Grunde, was Leute normalerweise tun, um einen Benutzer angemeldet zu halten? Wenn ja, ist das JSON-Web-Token (JWT) im Prinzip eine Möglichkeit, das oben erwähnte Hash-Token zu erstellen? Wenn man davon ausgeht, dass die Verbindung HTTPS ist, scheint mir dieser Ansatz sicher zu sein. Es ist nicht?

Edit 2
This article gibt eine interessante Diskussion, in Bezug auf die Zugriffstoken zu speichern.

Antwort

2

Ist es eine sichere und übliche Möglichkeit für ember, den Benutzer basierend auf dem Cookie des letzten Besuchs automatisch einzuloggen?

Ja und nein. Sicherheit ist ein komplexes Thema. In der Regel werden Session-Cookies zur Autorisierung von Benutzern verwendet. Dies ist die am häufigsten verwendete Methode, um die Benutzer eingeloggt zu halten. Wenn der Benutzer seine Anmeldeinformationen nicht sicher aufbewahren kann, können Sicherheitsschichten anfällig sein.

Bei einseitigen Anwendungen werden normalerweise Zugriffstoken anstelle von Cookies und Sitzungen verwendet. Der Client sendet die Benutzeranmeldeinformationen und der Server gibt ein Zugriffstoken zurück. Das Token ist verschlüsselt und ablauffähig und kann in localStorage oder sessionStorage gespeichert werden. Verwenden JSON Web Tokens (JWT)standard ist eine beliebte Methode zum Implementieren der Benutzerauthentifizierung und Autorisierung in Webdiensten. Als ein Beispiel verwendet die Facebook Open Graph API Zugriffstoken.

JSON Web Token (JWT) ist ein kompakter, URL-safe mittels repräsentierte Ansprüche zwischen zwei Parteien übertragen werden. Die Ansprüche in einem JWT sind als ein JSON-Objekt codiert, das als Nutzlast einer JWS-Struktur (JSON ) oder als Klartext einer JWEON-Struktur (JWE) verwendet wird, wodurch die Ansprüche digital werden können signiert oder Integrität geschützt mit einem Message Authentication Code (MAC) und/oder verschlüsselt.

edit:

also über Fluss ist im Grunde, was die Menschen in der Regel einen Benutzer angemeldet halten tun?

Für traditionelle Websites, ja.

Der ganze Sinn der Verwendung von Access-Token ist die Aufrechterhaltung des Web-Service/API statusless. Dies bedeutet, dass der Server keine Cookies/Sitzungen zum Authentifizieren und Autorisieren von Benutzern speichern muss. Der Staatenlose ist einer der Schlüsselfaktoren für die Implementierung von Web-Services, die dem Paradigma REST folgen. Es ist der Client, der das Token speichern und an den Server senden muss (über den Berechtigungsheader oder die Abfrageparameter). Der Server speichert das Token nicht. Natürlich können Sie die Token auf dem Server speichern, wenn Sie eine weitere Sicherheitsebene hinzufügen möchten. Dies ist jedoch nicht so häufig und nicht notwendig. Wenn Sie die Token auf dem Server speichern, kann Ihre Anwendung auch anfällig für Datenbankangriffe werden und wird nicht empfohlen.

Wenn Sie den Prozess sicherer machen möchten, können Sie die Gültigkeitsdauer von Zugriffstoken verringern (1 Stunde, 1 Tag oder 1 Woche, es liegt an Ihnen).

Wie für localStorage, ist es sicher?

localStorage Daten werden für jeden Ursprung (Domäne) getrennt gespeichert. Ein böswilliger Benutzer kann die Daten nur lesen, wenn er Zugriff auf den Benutzerbrowser hat. Sie sollten sicherstellen, dass Ihre App keine XSS-Sicherheitsanfälligkeiten aufweist, sodass böswillige Benutzer keine Skripts in Ihre Anwendung einfügen können. Das ist eigentlich ein anderes Thema.

+0

danke für die antwort. Ich habe meine Frage basierend auf Ihrer Antwort aktualisiert. Allerdings bin ich mir Ihrer Antwort nicht ganz sicher. Angenommen, ich möchte einen Benutzer über die aktuelle Sitzung hinaus angemeldet lassen. Dann denke ich, die SessionStorage wird nicht funktionieren, oder? Wie für localStorage, ist es sicher? Kann es von bösartigen Seiten gewonnen werden? – JBT

+0

Ich habe gerade diesen interessanten Artikel über das Speichern von JWT-Token in einem Cookie- oder Webspeicher gefunden, der tatsächlich Cookies über Webspeicher empfiehlt: https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5 -Web-Speicher – JBT

Verwandte Themen