# session Speicherort - ID ändern



## maxxi (26. Nov 2009)

hello,

ich hätte 2 Fragen zu Sessions:

- wie und wo werden die Session-Daten abgespeichert? Per Default in einer txt-Datei? Kann man den Ort, wo die Daten abgespeichert werden, ändern?

Lt. Web Application: Servlets and Filters scheint es so, als würden Session-Daten überhaupt nicht (temporär) persistent gespeichert werden. Kann das sein? Liegen die Session-Daten nur im RAM?

Anscheinend gibt es den persistent-store-Typ "file". Wie kann man denn auf den umstellen??
Ich hätte jetzt so etwas gefunden:


```
<session-config use-persistent-store="true"/>
```

Allerdings: wie kann man hier einstellen, in welchem Medium (Datei, Datenbank, ...) gespeichert werden soll?? Geht das vielleicht irgendwie hiermit:?


```
<persistent-store type="file">
???
</persistent-store>
```

Kommt das noch zum session-config hinzu?

- kann man die ID einer Session ändern, ohne dass die Session-Daten irgendwie verändert werden?

Auf Interface javax.servlet.http.HttpSession gibts keine Infos dazu.


----------



## HLX (27. Nov 2009)

maxxi hat gesagt.:


> Lt. Web Application: Servlets and Filters scheint es so, als würden Session-Daten überhaupt nicht (temporär) persistent gespeichert werden. Kann das sein?


Sicher. Persistierung wäre sicherheitskritisch. Es ist durchaus gewollt, dass Sitzungsdaten nach einer gewissen Zeit zu 100% vom System verschwinden, damit kein Missbrauch mit den Daten erfolgt. Für die relativ kurze Lebensdauer der Sitzung macht eine Persistierung keinen Sinn und würde nur zusätzliche Probleme schaffen.



maxxi hat gesagt.:


> - kann man die ID einer Session ändern, ohne dass die Session-Daten irgendwie verändert werden?


Wozu willst dir das antun? Der Servlet Container erzeugt für dich automatisch eine eindeutige Session-ID.


----------



## maxxi (27. Nov 2009)

Ich versuche eine Schnittstelle zu PHP zu generieren. Sodass dann auch PHP mit den Session-Daten von JSP arbeiten kann. Und in PHP werden per Default alle Session-Daten (temporär!) persistent in txt-Dateien abgelegt (eine Garbage Collection kümmert sich dann darum, veraltete Session-Dateien zu löschen). Dort kann man auch die Session-ID ändern, ohne die Daten angreifen zu können. Die ID bei jedem Request zu ändern kann man im PHP aus Sicherheitsgründen machen.


----------



## FArt (27. Nov 2009)

maxxi hat gesagt.:


> Die ID bei jedem Request zu ändern kann man im PHP aus Sicherheitsgründen machen.


ROFL


----------



## Noctarius (27. Nov 2009)

Was du willst heißt SSO (Single-Sign-On).
Entweder greifst du hierbei auf fertige Lösungen zurück (Google sollte da helfen) oder du baust in Java einen Miniwebservice welcher von PHP abgefragt werden kann. Einer PHP-Seite musst du dann nur eine eindeutige Id mitgeben, mit welcher sich PHP gegenüber Java identifizieren kann und zeigt "ja ich darf auf die Daten von XYZ zugreifen, also gib her".
Um die Datenübertragung musst du dich allerdings in diesem Falle selbst kümmern.

PS: Wie willst du denn von PHP auf persistierte Java Objekte zugreifen? ;-) ObjectOutputStream ist da nicht gerade lesefreundlich unterwegs.


----------



## maxxi (27. Nov 2009)

> baust in Java einen Miniwebservice welcher von PHP abgefragt werden kann


Ich vermute, du meinst die PHP-Java-Bridge. Die kenn ich schon.



> Wie willst du denn von PHP auf persistierte Java Objekte zugreifen?


Mit "persistierte Java Objekte" meinst du wohl die Session-Daten. Ich vermute mal, dass diese serialisiert abgespeichert werden. Die Frage wäre dann als nächstes aufgetaucht. Aber ich würde gerne einen Schritt nach dem anderen machen. Der Weg ist das Ziel 

Jetzt würde ich mal gerne erfahren, wie JSP mit Session-Daten umgeht. Werden die per Default im RAM abespeichert? Wie könnte ich sie in einer Text-Datei speichern?


----------



## Noctarius (27. Nov 2009)

Nein ich rede nicht von einer PHP-Java-Bridge, sondern von einem WebService in Java, den du von PHP aus ansprechen kannst um Daten zu erfragen (z.B. eben gewisse Sessiondaten)


----------



## maxxi (27. Nov 2009)

> WebService in Java, den du von PHP aus ansprechen kannst um Daten zu erfragen (z.B. eben gewisse Sessiondaten)


Hört sich wirklich sehr interessant an! Kennst du den Namen dieses Services? Oder kennst du den Namen einer seiner Klassen? Oder hast du zufällig eine URL bei der Hand, wo dieser Service beschrieben ist?

Meinst du etwa Sockets? Dass ich dann in PHP via Socketverbindung die Session-Daten abfragen kann (JSP Socket-Server, PHP Socket-Client ... wäre das überhaupt möglich)?


----------



## Noctarius (27. Nov 2009)

Noctarius hat gesagt.:


> Was du willst heißt SSO (Single-Sign-On).
> Entweder greifst du hierbei auf fertige Lösungen zurück (Google sollte da helfen)


siehe oben


----------

