Tobi: Understanding sessions....

Hallo,
ich versuche gerade, Sessions zu verstehen, und gebe mir wirklich groosse Muehe...;)

Folgende Fragen: Ein Session Objekt wird beim start einer Session auf dem Server angelegt (Windoofs 2000 natuerlich, IIS).

Wird dadurch eine Datei auf dem Server erzeugt? Und wo kann ich diese Datei im directory finden? (root des webservers? oder windows verzeichnis?)
Kann ich mir diese Datei anschauen? Sind dort die selben Informationen gespeichert, wie in dem Session Cookie, oder nur eine Art SessionID?

Habe dazu nix in der MS Library gefunden...

Gruss & Danke fuer Eure Antworten,
Tobi

  1. N'Abend,

    also ob ich jetzt gerade das ganze Thema kurz erschlagen kriege weiß ich nicht, aber ich fang einfach mal an:

    Wird dadurch eine Datei auf dem Server erzeugt? Und wo kann ich diese Datei im directory finden? (root des webservers? oder windows verzeichnis?)

    Tja, ich weiß nicht genau, wie das beim IIS ist, das müsste ich mal nachsehen. Der Apache legt, je nach Einstellung (glaube ich), eine Datei ab, bei mir tut er es jedenfalls. Die kann man sich dann auch anschauen, das Verzeichnis muss man konfigurieren (zumindest unter Windows) und damit findet man auch die Dateien. Die heißen dann so etwas wie <sessionid>.txt und können mit einem beliebigen Texteditor geöffnet werden. Darum ist es auch maßlos gefährlich, wenn die Sessions in einem Bereich des Servers liegt, auf den man von außen Zugriff nehmen kann: Man könnte die Dateien lesen (Passwörter, Nutzernamen), schreiben (ich bin der und der und außerdem admin...) und löschen...

    In der Regel wird in der Session eher nicht das selbe stehen wie im Session Cookie - Sogar i.d.R. ist noch untertrieben. Das Session-Cookie ist ein Instrument, dass dein Client gegenüber dem Server verwendet um ihn daran zu erinnern, dass die beiden schon mal miteinander geredet haben. Der Server weiß ja "ah, da ist ein Client, machen wir mal eine Session auf". Aber woher soll er schon beim nächsten Seitenaufruf wissen, dass es noch der selbe Nutzer ist. Also geht der Client hin, schickt das Cookie mit, da ist noch die Session-ID drin und der Server schaut nach, ob er die Session noch hat. Alternativ kann das ganze auch über die URL geschehen, in diesem Fall fügt z.B. PHP automatisch in Formulare und URLs diese Session-ID mit eine - Der Effekt ist der selbe, es funktioniert halt auch ohne aktivierte Cookies.

    Ob du auch beim IIS in die Session einsehen kannst, müsstest du mal anderweitig herausfinden...
    http://take23.org/docs/guide/modules.xml/1
    Dieser Link verrät mir allerdings, dass der IIS grundsätzlich seine Sessions wohl nur im RAM hält, der Apache ist da eher flexibel...

    Rouven

  2. Hi, hallo

    wenn der Sitzungsstatus für deine Website aktiviert ist, dann verwaltet der IIS für ASP die Session-Daten im RAM

    Da gibts dann für jeden Besucher deiner Site quasi eine Instanz der Session-Klasse.

    Diese Session Klasse hat die eindeutige Kennziffer, die man als SessionID kennt. Wenn der Besucher Sitzungscookies aktiviert hat, dann steht dieser Cookie via der SessionID mit der Session Instanz auf dem Server in Verbindung. Sind Cookies voll deaktiviert, beginnt für jeden Aufruf quasi eine neue Session bzw die Session von neuem.

    Mit .net (ASP.net & Co.) kannst du die SessionDaten dann auch via MS SQL Server verwalten, hab ich aber noch nicht pro-Bier-t.

    eine ASP Session besteht aus u.a. folgenden wichtigen Informationen:

    -Timeout
    -Contents (Sessionvariablenauflistung)  -> Session("meineVariable")
    -SessionID

    Unter ASP ist mir keine Methode bekannt, diese Daten in einer Datei zu serialisieren, außer, du schreibst dir selber eine Funktion, Extension... wai

    Zwecks ressourcenschonung sollten ein paar Dinge beachtet werden:

    • nicht zu viel und speicherintensive Elemente in der Session ablegen (Recordsets usw)
    • keine global verwendbaren Informationen mit jeder Session spiegeln

    Ansonsten sind Sessions nicht das große Mysterium.

    Tschau, tschüß,
    Frank