web-dev-qa-db-ger.com

"Auf diesem Computer merken" - wie soll es funktionieren?

Wenn Sie sich die Cookies von Google Mail ansehen, können Sie leicht erkennen, was in dem Cookie "Erinnere dich an mich" gespeichert ist. Der Benutzername/Einmalzugriffstoken. Es könnte auch in Fällen, in denen der Benutzername geheim ist, anders implementiert werden. Aber was auch immer ... die Sicherheit ist nicht sehr hoch: Sie stehlen den Keks und sind bereit zu gehen.

Meine Frage ist jedoch funktional: Wann wischen Sie ihre Zugriffstoken ab? Wenn sich ein Benutzer ohne anmeldet und auf einem anderen Computer auf "Remember Me" klickt, sollte er seine Zugriffstoken auf allen Computern ungültig machen? Ich frage, wie dies traditionell umgesetzt wird und wie es umgesetzt werden sollte.

47
Dan Rosenstark

Ich benutze regelmäßig 2 oder 3 Maschinen gleichzeitig und habe an allen Maschinen "sich an mich". Wenn einer von ihnen die Verbindung mit den anderen abbrach, wäre das sehr nervig, also würde ich es nicht empfehlen.

Normalerweise würde das Zeitlimit überschritten, der Cookie verfällt nach einer bestimmten Zeit (oder wenn der Benutzer sich abmeldet).

Es hängt alles von Ihrem Sicherheitsmodell ab. Wenn Sie eine interne Unternehmensanwendung schreiben, bei der Sie immer nur von einem Benutzer auf einem Computer erwarten, sollten Sie strengere Einschränkungen als Google Mail haben.

Beachten Sie auch die Möglichkeit des Denial of Service. Wenn eine Aktion auf einem Computer dazu führen kann, dass ein anderer Computer nicht mehr verwendet werden kann, kann dies dazu verwendet werden, um zu verhindern, dass ein berechtigter Benutzer in bestimmten Szenarien die Kontrolle übernimmt.

15
Nick Fortescue
20
Paul Dixon

Bei der Anmeldung von einem anderen Computer aus darf der mit einem Cookie auf einem anderen Computer verknüpfte Login nicht ungültig werden. Wenn sich die Benutzer jedoch abmelden oder "Sie nicht hier anmelden", sollte das Cookie gelöscht werden, mit dem der Benutzer arbeitet.

Im Übrigen kann das Stehlen eines Cookies sehr schwierig sein, indem Sie auf https bestehen und nicht für das Scripting.

Durch das Hinzufügen von "; HttpOnly" zum Ausgang Ihres Cookies wird der Cookie für Javascript nicht verfügbar, z.

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/7.0
Set-Cookie: ASP.NET_SessionId=ig2fac55; path=/; HttpOnly
X-AspNet-Version: 2.0.50727
Set-Cookie: user=t=bfabf0b1c1133a822; path=/; HttpOnly
X-Powered-By: ASP.NET
Date: Tue, 26 Aug 2008 10:51:08 GMT
Content-Length: 2838

sie können mehr darüber lesen 

5
David Waters

Das Erinnerungscookie sollte die Maschine ebenfalls identifizieren. Es sollte sich auf die Maschine beziehen, da es Orte gibt, an denen Sie sich erinnern möchten, und an anderen Orten, an denen Sie nicht arbeiten möchten (Zuhause gegen Arbeit).

Das Ablaufdatum wird normalerweise auf einen angemessenen Zeitraum (zwei Wochen) oder nachdem der Benutzer sich explizit vom Computer abgemeldet hat, festgelegt.

3
Vinko Vrsalovic

Ich würde jede Sitzung mit einer IP-Adresse verknüpfen. Wenn ein Sitzungstoken von einer anderen IP-Adresse als der gesendeten Adresse gesendet wird, lehnen Sie es ab.

0
Sionide21

Zugriffstoken sollten IP-spezifisch sein, damit sie nicht ohne weiteres auf mehrere Maschinen übertragen werden können.

Sie sollten auch so implementiert werden, dass Benutzer sehen können, auf welchen Rechnern sich aktive Token befinden.

Sites, die sich dafür entscheiden, ein Token abzubrechen, sobald ein neues auf einem anderen Computer erstellt wird - Sie können entscheiden, dass ihre Benutzer nicht auf mehreren Computern auf ihren Dienst zugreifen. Wenn dies der Fall ist, berechtigt sie der Benutzer dazu, sich erneut anzumelden.

Die Richtlinie, die Sie anwenden, hängt wirklich von den Daten, die Sie haben, und den Bedürfnissen des Benutzers ab.

0
Grouchal