Sven Rautenberg: Session und Cookies

Beitrag lesen

Moin!

In dem von dir verlinkten Archiv-Artikel (</archiv/2004/1/70719/#m406911>) hat Sven Vorbehalte gegen das Abgleichen der IP-Adresse [1]:

Zitat: "Wenn du zwingend erforderst, dass deine Benutzer in einer Session immer dieselbe IP haben, dann verhinderst du bei einem gewissen Prozentsatz eine ordentliche Nutzung."

Ich sehe das nicht wirklich so, vielleicht fehlt mir hier aber auch die Erfahrung. IP-Adressen von einem User sollten nicht ständig wechseln (innerhalb einer Session, typischerweise 5-10 Minuten).

Du widersprichst meinem Einwand aber in keiner Weise. Natürlich ist das Leben angenehmer und eine Prüfung der IP sicherer, wenn man irgendwie garantieren kann, dass Benutzer immer einzeln eine feste IP nutzen.

Das ist dann aber ein ganz spezielles Szenario, und nach meinem Empfinden eher selten.

Eine IP-Adresse wird doch nur gewechselt, falls der User dies manuell tätigt oder zum Beispiel die Telekom einen Adressen-Wechsel erzwingt (IMHO alle 24h?). Wird sie einmal gewechselt, weil er z.B. um Mitternacht eine neue IP aufgezwungen bekommt: neu einloggen und für die nächsten 24h (?) sollte das Problem nicht mehr auftauchen.

Zwei Fragen stellen sich:

1. Welche zusätzliche Sicherheitsqualität wird gewonnen, wenn die IP geprüft wird?
2. Welcher ärgerliche Schaden kann entstehen, weil sich ein Nutzer einmalig unerwartet oder dauerhaft nervig neu einloggen muß?

Zu Frage 1:
Eine zusätzliche Sicherheitsqualität wird IMO nicht gewonnen. Zur Erlangung des unerlaubten Zugangs sind lediglich mehr Parameter "richtig" zu raten und zu setzen, als bei einer simplen Session-ID. Gerade was die IP angeht, sind mögliche Szenarien durchaus denkbar. Wer in einer Firma mit NAT ins Internet geht, kann die Session eines Kollegen übernehmen - erst recht, wenn aufgrund der Standardinstallation des Browsers überall die gleiche Versionsnummer und Softwareausstattung vorhanden ist. Bei diesem Szenario braucht man wieder "nur" die richtige Session-ID.

Zu Frage 2:
Es mag Szenarien geben, da ist der Verlust einer begonnenen Session nicht so schlimm. Aber eigentlich benutzt man Sessions doch gerade, um Informationen mitzuschleppen. Egal ob es sich dabei um einen Warenkorb, die Information "eingeloggt - ich bearbeite gerade Text" oder sonst etwas handelt - in allen Fällen würde wertvolle Arbeit des Nutzers zerstört, wenn dieser aufgrund seines nicht beeinflussbaren IP-Wechsels komplett an den Anfang zurückgesetzt wird.

Dann wird er halt zu seinem Schutz ausgeloggt und muss sich wieder anmelden - so what?

Du vergisst, dass die Session ja begonnen wird, um irgendwas zu erreichen. Dieser Zweck wird durch Ausloggen nicht erreicht. Die Benutzer werden sich daher entweder gegen dein System sträuben und wegbleiben, oder wirkungsvolle Gegenmaßnahmen erfinden, welche deine Systemsicherheit dann wieder senken könnten.

Ich halte daher die IP für kein sinnvolles Kriterium, weil sie sich browserunabhängig verändern kann. Die vom Browser gesetzten HTTP-Header sind dagegen vielleicht akzeptabel, weil die sich tatsächlich nur beim Verändern des Browsers ändern - wenngleich auch hier Proxys eingreifen und unerwartete Veränderungen durchführen könnten, auf die der User keinen Einfluß hat.

Aber alles dies bringt keinen qualitativen Sicherheitsgewinn, sondern nur einen quantitativen: Man muß mehr in seinem angreifenden HTTP-Request richtig raten (oder herausgefunden haben). Wenn es tatsächlich um wichtige Dinge geht, ist Verschlüsselung die einzig gangbare Methode. Dann kann immerhin auf dem Übermittlungsweg nichts abgehört werden. DAS wäre eine qualitative Verbesserung der Sicherheit.

- Sven Rautenberg