Frage zu Log-in Funktion "Angemeldet bleiben"?
Hi, bei vielen (Online)Accounts gibt es ja die Funktion "Angemeldet bleiben". Wodurch funktioniert diese, durch Speicherung von Cookies auf dem Computer?
Auch wüsste ich gerne ob die Gefahr besteht wenn man angemeldet bleibt, sprich bei dieser Funktion das Häkchen auf Ok setzt, das sich jemand von anderswo einfach Zutritt zu dem Eigenen Account schaffen kann, während man die ganze Zeit angemeldet ist?
Und ist dies nur Browser-Basiert? Sprich das die Angemeldet Funktion nur aufrecht bleibt solange man den gleichen Browser benutzt?
Was passiert wenn man bei seinen Internetoptionen die Funktion eingestellt hat das nach Browser-ende alle Cookies etc. gelöscht werden, oder wenn man sogar einen Browser deinstalliert weil man ihn nicht mehr nutzt?
1 Antwort
Das funktioniert so:
Beim einloggen wird Username und Passwort mit den gespeicherten Zugangsdaten in der Datenbank abgeglichen. Stimmen sie, wird serverseitig eine Session angelegt. Stell dir das vor wie eine Tabelle mit den Spalten "Session ID", "User ID", "Timeout" und ggf. weiteren Daten, die ständig gebraucht werden (z.B. eine Kopie vom Anzeigename) oder Session-spezifisch sind. Jede aktive Session ist eine Zeile in der Tabelle. Beim Anlegen einer Session wird mithilfe einer Hashfunktion eine Session ID generiert, die dann im zum Nutzer gesendet wird. Der Browser legt daraufhin ein Cookie an, das die ID speichert. Das Cookie hat ebenfalls ein Timeout gesetzt, ab dem der Browser es als verfallen ansieht.
Bei jedem Seitenaufruf wird jetzt das Cookie in der HTTP-Anfrage mitgesendet. Der Server sieht die Session ID, prüft seinerseits ob es nach seinen Informationen noch aktuell ist. Und wenn ja, weiß er welcher Nutzer es ist der die Seite aufgerufen hat (er kennt ja die zugehörige User ID) und erkennt ihn als eingeloggt an. Fehlt das Cookie in der Anfrage (vom Nutzer im Browser gelöscht / abgelaufen) oder ist serverseitig der Timeout abgelaufen weiß der Server nicht mehr welcher Nutzer das ist weil er es entweder tatsächlich nicht weiß oder die Session nicht mehr als gültig anerkennt und die Zeile löscht. Das ist der automatische Logout. Der manuelle Logout entfernt die Zeile direkt auf Nutzerwunsch.
Wobei gesagt werden muss dass die entscheidende Variable eher der serverseitige Timeout Wert ist, da ein Nutzer das Cookie nach Belieben manipulieren kann. Außerdem wird in der Praxis häufig immer eine Session gestartet, auch wenn sie nicht mit einem Nutzer assoziiert wird (das geschieht dann erst beim Login). Aber das sind Feinheiten der Implementierung.
Die "angemeldet bleiben" Option macht nichts anderes als den Timeout im Cookie und der Session-Variable hochsetzen. Entweder auf einen besonders langen Zeitraum (z.B. eine Woche) oder gar auf sowas wie "unendlich".
D.h. alles hängt hier vom Cookie ab. Jeder, der an deine Cookies kommt hat deine (noch aktuelle) Session ID und kann dem Server vorgaukeln dass du es bist und ist eingeloggt. Ein Browser erlaubt dem JavaScript auf Webseiten zwar nur das auslesen der eigenen Cookies (Das JavaScript in der gmx.de-Webseite darf Cookies für gmx.de auslesen), aber wenn ein Angreifer es schafft eigenen JavaScript-Code einzuschleusen (z.B. weil eine Kommentarfunktion die Eingabe nicht überprüft) könnte er die ID auslesen und sich schicken. Das nennt sich Cross-Site-Scripting (XSS-Attacke).
Wenn du auf das Schloss neben der Adresszeile klickst, dir die Cookies der aktuellen Webseite ansiehst kannst du ein Cookie finden mit einem Namen wie PHP_SESSION_ID oder gfmsession1 oder ähnlich. Das ist die Session ID. Wenn du willst kannst du dir ja mal ein Addon wie EditThisCookie in einem zweiten, völlig anderen Browser installieren, die Session ID vom ersten Browser kopieren, unter der selben Domain und Cookie-Namen mithilfe des Addons manuell anlegen und die Seite aufrufen. Dann müsstest, du wenn alles klappt, sofort angemeldet sein ohne dass du jemals vorher die Webseite in dem Browser aufgerufen hast. Es sei denn, die Webseite trifft Maßnahmen dagegen und speichert sich in der Session-Variable auch Browser-Informationen und/oder IP-Adresse und nutzt das zusätzlich für die Prüfung.
angenommen man wird von einer Website weitergeleitet und kommt dann auf eine Fake-Website die vortäuscht sie wäre z.B. Amazon
Diese Fake-Webseite hat aber nicht die Domain amazon.com sondern eine andere, die vielleicht nur so ähnlich klingt, sagen wir anazon.com. Für den Browser sind das völlig unterschiedliche Webseiten, auch wenn sie für den Nutzer gleich aussehen. Der Webseiteninhalt spielt dabei keine Rolle. Daher kann anazon die amazon-Cookies auch nicht einsehen bzw. bekommt sie nicht gesendet.
Eine Weiterleitung wird auch nicht von der Webseite durchgeführt, sondern vom Browser. Die Webseite bittet den Browser die genannte Seite auzurufen, der löst dann die genannte Webadresse selbst über das DNS-System auf und kennt die IP des Zielservers.
Unabhängig davon wohin der Browser weitergeleitet wird wird beim Aufbau der verschlüsselten Verbindung (noch bevor die Cookies gesendet werden, das geschieht später und verschlüsselt) die Authentizität der Webseite geprüft mithilfe digitaler Zertifikate. Also ob der Rechner tatsächlich zu Amazon gehört. Der Zielrechner muss dazu eine Aufgabe lösen die nur der Besitzer des Amazon-Zertifikats lösen kann - zumindest solange bis jemand das bisher ungelöste mathematische Problem dahinter löst (z.B. die effiziente Zerlegung von Zahlen in ihre Primfaktoren)
Ich hätte eine Frage, angenommen man wird von einer Website weitergeleitet und kommt dann auf eine Fake-Website die vortäuscht sie wäre z.B. Amazon. Da man bei Amazon auf angemeldet bleiben war, wird doch der Browser annehmen dass das Aamazon war und ihm die Daten zur meinem Account schicken.