Speicherung der Session-ID

serializable

Mitglied
Hallo,

ich erarbeite gerade ein Konzept für mein Login und frage mich wie die Session-ID am Besten gespeichert wird. Wenn ich Benutzern mit deaktivierten Cookies Zugang zum System gewähren möchte, benötige ich eine Callback Funktion. Ich wollte die Session also per POST oder GET an die nächste Seite übergeben.

Meine Frage ist eigentlich: Warum macht man eigentlich eine Fallunterscheidung "Cookies aktiviert " oder nicht ?

Wieso kann man nicht grundsätzlich einfach sagen, die Session ID übergebe ich in der URL ? Dann brauche ich nicht mehr zu unterscheiden ?

:confused: Ich hoffe, mein Anliegen wurde deutlich .

Danke
 
Meine Frage ist eigentlich: Warum macht man eigentlich eine Fallunterscheidung "Cookies aktiviert " oder nicht ?

Cookies sind zum Speichern der Session-ID empfehlenswerter, weil damit zum Einen der Raub der Session-ID schwieriger ist, und weil zum Anderen die Session auch aufrecht erhalten wird, ohne dass man ein Navigationselement benutzt.

Wieso kann man nicht grundsätzlich einfach sagen, die Session ID übergebe ich in der URL ? Dann brauche ich nicht mehr zu unterscheiden ?

Kann man doch
session.use_cookies->0
session.use_trans_sid=>1

Meine Frage ist eigentlich: Warum macht man eigentlich eine Fallunterscheidung "Cookies aktiviert " oder nicht ?
Die braucht man doch garnicht.
Die Session-ID wird da hergeholt, wo sie ist.
Ist sie im Cookie, wird sie aus dem Cookie gelesen, andernfalls aus GET.
Den Fall unterscheidet PHP schon selbst, darum musst du dich nicht kümmern.
 
Um die Schwachstelle der Sitzungs-ID in der Adresse zu erläutern: Besonders durch das automatische Senden des HTTP-Referer-Feldes, das die URL derjenigen Ressource enthält, von der aus der aktuelle Aufruf initiiert wurde, kann die Sitzungs-ID schnell in die falschen Hände fallen. Wenn aktiviert, wird sie sowohl bei aktiven Aufrufen (Links, Formularen) als auch bei passiven oder „versteckten“ Aufrufen (Bilder, JavaScript-, Stylesheet-Dateien) mitgeschickt.
Die absichtliche Weitergabe, beispielsweise als Surf-Tipp an einen Bekannten, ist da eher seltener, aber auch nicht unwahrscheinlich.

Deswegen ist es wichtig, dass eine Sitzungs-ID eine nur sehr begrenzte Gültigkeit hat und während einer längeren Sitzung regelmäßig ausgetauscht wird, um die Wahrscheinlichkeit, dass Fremde in den Besitz einer gültigen Sitzungs-ID kommen, gering ist.
 
Cookies sind zum Speichern der Session-ID empfehlenswerter, weil damit zum Einen der Raub der Session-ID schwieriger ist, und weil zum Anderen die Session auch aufrecht erhalten wird, ohne dass man ein Navigationselement benutzt.

Das ist gut. Vielen Dank Sven. Macht natürlich Sinn mit Session-Cookies zu arbeiten.

Es geht mir eigentlich auch um den Fall, was passiert, wenn Cookies deaktiviert sind. Mit deaktivierten Cookies kann ich mich auch hier im Forum anmelden. Meine Bank braucht auch keine Cookies.

Wahrscheinlich gibt es keine Standardlösung. Aber wäre es gut bei deaktiviertem Cookie die ID an die URL anzuhängen ? Oder soll ich einfach sagen : " Du mußt deine Cookies aktivieren, um dich einloggen zu können " ?

Eine Verkürzung der Sitzungszeit ist sicherlich ebenso sinnvoll, wie der Hinweis an den User, sich doch bitte auszuloggen. Ebenso wollte ich den User-Agent mit der Sitzungs-ID koppeln.

Vielen Dank
 
Es geht mir eigentlich auch um den Fall, was passiert, wenn Cookies deaktiviert sind. Mit deaktivierten Cookies kann ich mich auch hier im Forum anmelden. Meine Bank braucht auch keine Cookies.
Das regelt der PHP-Sitzungsmechanismus bei entsprechender Einstellung selbst.
Wichtig ist aber, dass falls die Sitzungs-ID per URL übergeben wird, der Client von der „Außenwelt“ abgeschottet werden sollte. Das heißt alle Anfragen, die die Website verlassen, sollten über eine Weiterleitung laufen, mit dem der HTTP-Referrer überschrieben wird.

Wahrscheinlich gibt es keine Standardlösung. Aber wäre es gut bei deaktiviertem Cookie die ID an die URL anzuhängen ? Oder soll ich einfach sagen : " Du mußt deine Cookies aktivieren, um dich einloggen zu können " ?
Das hängt davon ab, wozu die Sitzung verwendet werden soll.

Ein Beispiel: Beim Online Banking wird es keine Links auf Ressourcen außerhalb der Website geben. Auch wird es sehr unwahrscheinlich sein, dass URLs manuell weitergegeben werden, da der Benutzer weiß, dass damit seine Daten preisgegeben werden könnten. Dazu kommt schließlich noch die geringe technische Anforderung.
All diese Kriterien lassen eigentlich nur die URL als Übergabemedium übrig.

Gegenbeispiel: Communities leben vor allem von Benutzerinhalten. Dazu gehören auch Links, Bilder, Videos, etc. Links werden ausgetauscht, es gibt meist Werbung und Statistiktools von Drittanbietern. Es gibt also eine Menge Anfragen externer Ressourcen. Hier die Sitzungs-ID in der URL zu verpacken, ist sehr kritisch.
 
Hallo Gumbo,

das ist ein guter Tipp. Bei externen Weiterleitungen, ein Redirect einzusetzen. Ist es nicht auch so, dass die Session-ID bei normaler Übertragung via Cookie auch bei einem externen Link im Header übergeben wird. Also sollte man dann grundsätzlich mit Redirects arbeiten.

Ich mache es bei mir wohl nun so, dass ein Cookie für die Seite erforderlich ist, um sich einzuloggen.


Viele Grüße
 
Die Gültigkeit von Cookies ist bereits nur auf die Domain eingeschränkt, der ihn auch gesetzt hat. Das heißt andere Domains wird der Cookie erst gar nicht zugeschickt. Dennoch ist beispielsweise über Cross-Site-Angriffen möglich, an Cookies fremder Domains heranzukommen.
 
Zurück