Session ID sicherheitstechnisch relevant?

Hallo zusammen,

ich hätte eine Frage zur Session ID. Bisher habe ich gesehen, dass diese für den Warenkorb, Compare Listen usw. verwendet wird um diese einer Session und nicht einem User zuzuordnen und die Zuordnung zeitlich und “räumlich” zu begrenzen.

Meine Frage: Sind Session IDs sicherheitstechnisch relevant? Haben diese irgendwas mit Web Sessions gemein oder werden diese nur zum Zuordnen von Warenkörben und anderen Objekten verwendet?

Es geht darum, dass ich gerne die Session ID durch die User ID ersetzen möchte um Warenkörbe zu persistieren, damit u.A. ein Account von 2 Personen verwendet werden kann und beide User jeweils immer den selben Warenkorb haben. Existierende Kauf Plugins haben mich hierbei leider nicht überzeigt oder waren für die aktuellen ShopWare Version nicht verfügbar.

Btw, es wäre allgemein ein nettes feature entscheiden zu können ob man Warenkörbe einem User oder einzelnen Sessions zuordnen möchte. Das Verhalten mit den Session habe ich zuvor woanders nicht gesehen.

Besten Dank
Nikk

Hallo,

natürlich ist die sessionID sicherheitstechnisch relevant, siehe Session HiJacking.

Es ist beides im Warenkorb vorhanden, also userID und sessionID. Die userID jedoch nur, wenn der Benutzer eingeloggt ist. Shopware möchte auch Nutzern ohne Account einen persisten Warenkorb zur Verfügung stellen, siehe s_order_basket (Verbindungstabelle, die so als solche nicht in Doctrine auftaucht, nur im Cache!).

Das ganze anzupassen dürfte nicht so schwierig sein, für die Warenkorb Anzeige gibt es einen Filter Query. Außerdem hast Du auch die Möglichkeit, die sessionID zu ändern und/oder zusammen zu führen. Beachte hierbei jedoch eventuell auftretende Seiteneffekte, wie zum Beispiel dass Benutzer A den Bezahlvorgang eingeleitet hat und Benutzer B ihn letztendlich abschließt.

 

MFG

 

derwunner

Erstmal Danke für die Infos. 

Habe mich gestern ungünstig ausgedrückt. Natürlich ist die „eigentliche“ session ID, die z.B. über session_id geholt werden kann, sicherheitstechnisch relevant, da sie den Benutzer den Zugriff auf seine Session gewährleistet und wie du sagst gehijacked werden kann.

Aber ich habe mich gefragt ob $this->session->get(“sessionId”) eine selbst generierte ID is oder tatsächlich die ID der Session ist. Ich sehe gerade in sAdmin::regenerateSessionId, dass die session_id() verwendet und via $this->session->offsetSet(‘sessionId’, $newSessionId); gesetzt wird.

Die Frage war eher ob irgendwo im ShopWare eigenen Code die via $this->session->get(“sessionId”) abgefragte Session ID in für Validierungen o.Ä. relevant ist oder nur zum Identifizieren von Warenkörben verwendet wird.

Aber so wie sich das anhört, kann ich diese einfach durch $this->session->offsetSet(‘sessionId’, $userId); ersetzen ohne ein sicherheitsrisiko zu haben.

Danke für den Hinweis, wir werden das mal testen und notfalls mit einem Zwischenschritt arbeiten bevor die Produkte in den eigentlichen Warenkorb gelangen (z.B. active flag).

Viele Grüße
Nikk

Eventuell auch in Betracht ziehen, dass auch ein Cookie mit der Session ID gesetzt wird. Aber so weit mir bekannt ist die Session ID nur für die Warenkörbe relevant.

Musste allerdings feststellen, dass im Laufe der Zeit viele tote Warenkörbe (meine nicht Gastbestellungen) bei den Kunden entstehen. Teilweise sehen die Kunden ihre alten Warenkörbe gar nicht mehr. Ok, das ist jedoch ein anderes Thema.