Hallo,
Ich würde die Session gern noch an weitere Daten koppeln damit die übernahme einer Session nicht nur von der ID anhängt. Ein Ansatz wäre es, einen Token in einer Datenbank und der Session zu speichern und diese gegeneinander zu vergleichen.
Das ist ohnehin übliche Praxis, aber eher um Cross-Site Request Forgery zu verhindern. Nennt sich z.B. authenticity token. Jeder Request mit Seiteneffekten (üblicherweise POST, PUT, DELETE usw.) muss zusätzlich zum Session-Cookie den Token im Body übertragen. Wenn das nicht der Fall ist, kann dem Request nicht vertraut werden.
Das schützt aber nicht vor Session-Hijacking, soweit ich das sehe. Denn der Token wird bei einem GET-Request im HTML mitgeliefert, z.B. als verstecktes Formularfeld. Wenn ich die Session-ID habe, kann ich mir auch den Token holen.
Es ließe sich natürlich eine Request-Charakteristik erstellen, z.B. auf Basis von IP-Adresse und User-Agent. Das kann leider auch False Positives erzeugen. Die IP-Adresse kann sich während einer Session ändern und der User-Agent von Proxies geändert werden. Große Sites nutzen daher Zwei-Faktor-Authentifizierung, wenn sie verdächtige Muster feststellen. Der Nutzer wird aufgefordert, neu einzuloggen und z.B. ein Token einzugeben, das per SMS zugestellt wurde.
Mathias