Session Management – Datei basiert, mit Memcache und mit JSON-Token

Was sollte in einer Session gespeichert werden?

Bei allen Methoden treten zunehmend Probleme auf, wenn ihr die Datenmenge zu groß werden lasst. Insbesondere JSON-Tokens können sehr lang werden und müssen als Teil der URL, sowohl vom Browser als auch vom Server verarbeitet werden. Obwohl es egtl. keine definierte Grenze gibt, solltet ihr euch sicherheitshalber auf 2.000 Zeichen beschränken (Stichwort: Internet Explorer).

Die anderen Verfahren codieren eure Daten in einen String mit serialize(). Auch hier bedeuten mehr und „komplizierte“ Daten negative Auswirkungen auf die Performance. Hier zählt leider jedes bisschen, da ihr für jedes Request die Session mindestens einmal einlesen und wieder abspeichern müsst.

Was genau ihr benötigt hängt stark von eurer Anwendung ab, folgendes tritt aber häufig auf:

  • Information, dass und welcher Benutzer eingeloggt ist (z. B. über User-ID)
  • Rechte des Nutzers (roles) um Zugriff zu bestimmten Bereichen der Seite zu kontrollieren
  • Zusätzliche Informationen zum Benutzer, die eine Datenbankabfrage verhindern können (z. B. username, der überall auf der Seite angezeigt wird; Erfahrungspunkte/Level in einem Spiel, …)
  • Erstellungs- oder Ablaufdatum der Session
  • CSRF-Tokens
  • Inhalt eines Warenkorbs (z. B. Produkt-ID und Anzahl)

Weiter mit Sicherheit