session_id und sicherheit: was hat das gemeinsam???
da http zustandslos ist, ist jeder request eine in sich abgeschlossene sache. möchte man aber eine folge von requests als eine geschlossene transaktion haben, benötigt der server eine wiedererkennung des clients. dies ist der zweck einer session_id.
daher muß der client diese kennung (session_id) bei jedem request mitschicken, damit der server den client wiedererkennt. diese kennung erzeugt der server und schickt sie in jedem fall zumindest bei dem 1. request mit an den client. damit erübrigt sich die frage, ob diese von außen manipuliert werden kann.
schickt ein client eine kennung welche der server nicht vergeben hat, kann natürlich auch keine wiedererkennung erfolgen.
schicken mehrere clients die gleiche kennung kann der server die clients nicht unterscheiden. daher ist es wichtig eindeutige kennungen zu erzeugen. sonst entsteht ein durcheinander.
im ergebnis soll die kennung eine stateful http verbindung ermöglichen. dies hat mit den daten der session nichts zu tun. diese müssen auf dem server vorgehalten werden.
was hat die wiedererkennung des clients aber nun mit sicherheit zu tun ????
stellt der client nun seine arbeit ein (weil der benutzer nach hause geht, oder der pc abstürzt) bekommt der server davon nichts mit.
startet nun ein anderer client einen request mit der kennung, glaubt der server mit dem abgestürzten client zu kommunizieren. daher ist es wichtig eine abmeldeprozedur zu haben welche die kennung als nicht mehr benutzt deklariert. sonst könnte ein mißbrauch stattfinden.
es hindert aber auch nichts daran, neben der kennung zusätzlich ein passwort bei jedem request mitzuschicken. dann ist die kennung allein wertlos.