[Erledigt] Session Fixation - ständig neue Sessions -.-

Hi,

ich bin gerade dabei eine Internetseite zu coden. Ich möchte das Loginscript (natürlich) gegen Session Fixation Angriffe absichern. Ich hab jetzt mehrere Probleme (und generell sowas noch nie gemacht).

1. Problem:

Jedenfalls rufe ich in der Login Seite (Admin Seite) folgenden Code auf, um eine neue Session zu erhalten:


<jsp:scriptlet>
		// always generate new session id to prevent Session-Fixation exploits
		session.invalidate();
		request.getSession(true);
</jsp:scriptlet>

Das funktioniert auch, aber NUR wenn man 2 mal auf den Link zur Login Seite klickt. Beim ersten Ansteuern der Seite verändert sich die Session nicht! Und das kann sicher nicht im Sinne des Erfinders sein. Also 1. Frage warum funktioniert das nicht?

2. Problem

Die Session Id die dann in der Login Seite neu erzeugt wird, geht immer verloren. Es sieht so aus, als ob einfach eine neue Session erzeugt wird oO
Klickt man nachdem man auf der Admin Seite war also auf irgend einen Link, wird eine neue Id erzeugt. Obwohl ich ja keinen expliziten Code dafür habe.

Liegt das vielleicht daran, dass ich die Session in der index.jspx erstmalig erzeuge und in der index.jspx alle anderen Dateien included werden? Ich hab echt keine Ahnung. Bin nun seit Stunden am Googeln und hab schon alles mögliche ausprobiert. Die Session erst in der admin.jspx zu erzeugen und dann weiterzugeben funktioniert auch nicht…

Die Übergabe der Session ID erfolgt bis jetzt über Cookies.

Hier der Code der index.jspx:
http://nopaste.coding-community.net/view.php?id=389
Die inhalt.jspx (dort werden die verschiedenen Scripte/Seiten geladen):
http://nopaste.coding-community.net/view.php?id=390
und schließlich die admin.jspx wo der User die Login Daten eingeben kann:
http://nopaste.coding-community.net/view.php?id=391

Ich denke das müsste an Infos genügen und hoffe auf HIlfe…

Gruß
Revenant

Ich hab zwar noch nix mit Session unter JSP gemacht aber in anderen Sprachen daher kann ich nur Vermutungen schreiben.

Also mit dem JSP-Scriptlet gibst Du an das er die Session für ungültig erklären soll, das bedeutet es wird eine neue Session erzeugt. Wenn Du jetzt die Seite in der dieses Scriptlet integriert ist jedesmal wieder aufrust, egal ob direkter Aufruf oder durch includieren, wird die Session jedesmal neu generiert, das wäre jetzt meine Vermutung wegen der ständig neuen Session-ID.

Eine neue Session-ID sollte man imho nur dann generieren wenn die Session a) abgelaufen ist oder b) der Nutzer sich abgemeldet hat.

Das übernehmen von Sessions verhindere ich immer damit, dass ich die Session zusätzlich in der Datenbank mit speichere und die Session so an den nutzer gebunden ist der sie erzeugt hat, bspw beim login.

Gut Schuß
VuuRWerK :wink:

Jo danke für deine Antwort, also das Problem hat sich inzwischen wohl gelöst…
ich habs noch nicht näher getestet, aber als ich heute versucht habe das Ganze zu reproduzieren wird wie von Geisterhand die richtige Session mitgegeben oO. Problem 2 also anscheinend gelöst (werds natürlich nochmal genau durchtesten) - und nein ich weiß nicht woran es liegt…

Zu Problem 1 kann ich sagen, dass die Session aktualisiert wird, die Ausgabe von session.getId() aber falsch war. Liegt wohl daran, dass ich das getId() in der index.jspx stehen hab und die admin.jspx in die index.jspx included wird. Anscheinend wird also zuerst session.getId() (in der index.jspx) ausgeführt und dann der Code der in der admin.jspx steht. Die Debug Ausgabe ist also trügerisch. Im Cookie steht jedoch auch der richtige Wert und wenn ich das session.getId() in der admin.jspx wiederhole bekomme ich auch die korrekte Id.

-> Thread gelöst

Greetz und thx