2009-07-02 7 views
47

Wenn Sie sich die Google Mail-Cookies ansehen, können Sie leicht sehen, was im Cookie "Erinnerung 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 Sache ist nicht sehr hohe Sicherheit: Sie stehlen den Keks und Sie sind bereit zu gehen."Erinnere mich an diesem Computer" - Wie soll es funktionieren?

Meine Frage ist auf der funktionalen Seite, jedoch: wann löschen Sie ihre Zugriffstoken? Wenn ein Benutzer sich anmeldet ohne "erinnert mich an" auf einem anderen Computer, sollte es ihre Zugriff Tokens auf alle Maschinen ungültig machen? Ich frage, wie dies traditionell umgesetzt wird und wie es umgesetzt werden soll.

+6

Ich denke, wie Cookies für die Sicherheit gesetzt wird, ist wichtig, wenn Sie eine Webanwendung programmieren - scheint völlig in Ordnung –

+73

Wie ist das nicht Programmierung im Zusammenhang? – Evan

+14

Definitiv Programmierung bezogen. – KingNestor

Antwort

15

Ich benutze regelmäßig 2 oder 3 Maschinen gleichzeitig und habe "erinnern mich" auf allen von ihnen. Wenn einer von ihnen die anderen trennt, wäre das sehr ärgerlich, also würde ich es nicht empfehlen.

Traditionell würde es eine Auszeit verwenden, der Cookie läuft nach einer bestimmten Zeit ab (oder wenn der Benutzer sich abmeldet).

Es hängt alles von Ihrem Sicherheitsmodell ab. Wenn Sie eine firmeninterne Anwendung schreiben, in der Sie nur erwarten, dass sich ein Benutzer auf einem Computer befindet, möchten Sie möglicherweise strengere Einschränkungen als Google Mail. Denken Sie auch an die Möglichkeit von Denial of Service - wenn eine Aktion auf einer Maschine eine andere Maschine unbrauchbar machen kann, könnte dies dazu dienen, zu verhindern, dass ein berechtigter Benutzer in bestimmten Szenarien die Kontrolle übernimmt.

+3

+1 Ich war dabei, über die gleiche Antwort zu schreiben, regelmäßig die gleichen Webseiten auf 4..5 Computern und auf einem Mobiltelefon zu benutzen. – laalto

+5

Danke dafür. Also konnte ich beim Abmelden alle hartnäckigen Sitzungen beenden? Das wäre nicht nervig? Es klingt gut für mich. –

+0

@daniel: Das Beenden aller persistenten Sitzungen beim Abmelden scheint eine vernünftige Sache zu sein. Andernfalls müssten Sie die Sitzungspersistenz pro Computer sowie pro Benutzer beibehalten. Auf diese Weise könnte es auch als Sicherheitsmaßnahme für den bewussten Benutzer funktionieren, der sicherstellen könnte, dass er jeden, der mit seinem Konto verbunden ist, kickt. – voyager

3

Der Cookie merken sollte die Maschine auch identifizieren. Es sollte mit der Maschine in Beziehung stehen, da es Orte gibt, an denen man sich erinnern möchte, und andere Orte, an denen man sich nicht erinnert (Heim oder Arbeit).

Verfallsdatum in der Regel zu einer angemessenen Frist gesetzt (zwei Wochen) oder nach der Benutzer explizit von der Maschine abgemeldet hat,

+0

Was würde die Maschine identifizieren? Ich kann die Mac-Adresse nicht abrufen, der Benutzeragent ist nicht eindeutig und die IP-Adresse ändert sich? –

+0

gibt es keine Möglichkeit, die Maschine eindeutig zu identifizieren, aber Sie können die Standardapproximationstechniken verwenden, zum Beispiel eine Kombination aus IP/UserAgent. Und scheitern auf der sicheren Seite, wenn sie sich ändern, ändern sie sich und es ist eine andere Maschine (auch wenn es nicht ist) –

+0

Danke Vinko. Ich dachte nur, dass es vielleicht einen magischen Browserschlüssel gibt. Aber wenn das der Fall wäre, würden die Seiten der Hacker es auch wissen ... Ich stimme Ihnen zu, obwohl ich mit der IP-basierten ID nicht einverstanden bin. –

5

von einer anderen Maschine Die Anmeldung sollte das Login im Zusammenhang mit einem Cookie auf einem anderen nicht ungültig Maschine. Wenn sich die Benutzer jedoch abmelden oder "nicht Sie? Melden Sie sich hier an", sollte dies den Cookie löschen, an dem der Benutzer arbeitet.

Übrigens kann man einen Cookie stehlen, indem man auf https beharrt und es nicht zum Scripting macht.

Durch Hinzufügen von "; HttpOnly" zum Ausgang Ihres Cookies wird das Cookie für JavaScript, 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 

können Sie mehr über diese

+3

+1 für httpOnly Cookie – jinsungy

+0

Danke dafür, David.Kannst du mir bitte ein paar Links oder etwas zu dem, worüber wir reden, mit einem Cookie "nicht zum Scripting" geben? –

+0

Bearbeitet nach Anfrage. –

0

lesen Was würde ich tun, ist jede Sitzung zu einer IP-Adresse verknüpfen. Wenn das Session-Token von einer anderen IP-Adresse als von Ihnen gesendet wird, lehnen Sie es ab.

+4

Das funktioniert nicht für einen Benutzer, der bei jedem Einschalten des Modems möglicherweise eine andere IP-Adresse erhält. Darüber hinaus würde es jemandem in einem Unternehmensnetzwerk ermöglichen, dass jeder Computer im Unternehmen über einen einzigen Proxyserver zum Internet gelangt, um die Anmeldeinformationen eines anderen Benutzers zu stehlen. IP-Adressen sind für die Identifizierung eines Benutzers überhaupt nicht nützlich - auch nicht über eine einzelne Sitzung hinweg, da manche ISPs Anfragen über verschiedene nichttransparente Proxys ziemlich zufällig weiterleiten. – NickFitz

+0

ditto NickFitz: Bei SO-Fragen dieser Art lehnen Menschen IP-basierte Sicherheit immer ab, da sich die IP-Adressen für viele Benutzer ändern. –

+0

"(...) da sich die IP-Adressen für * die meisten * Benutzer ändern." Dort behoben, dass für Sie. – voyager

0

Zugriffstoken sollten IP-spezifisch sein, so dass sie nicht leicht auf Maschinen übertragen werden können.

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

Websites, die ein Token löschen, sobald ein neues auf einem anderen Computer erstellt wurde - wählen Sie, dass ihre Benutzer nicht auf mehreren Computern auf ihren Dienst zugreifen - oder wenn dies der Fall ist .

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