Fremde Session beenden

r3wDy

Grünschnabel
Hi Leutz!
Ich hab da n Problem, hab auch schon was dazu gefunden im ASP Forum aber die sind zu keinem Ergebniss gekommen.
Es geht um folgendes:
Ich habe eine Session, weil ich mich wo eingeloggt habe, damit habe ich auche SessionID.
Nun kann man aber nochmal auf dieLoginSeite gehen und sich unter nem andren namen einloggen, da der browser nicht zu war bekommt der auch keine neue session id, und schon hab ich 2 user mit der selben sessionid, oder einen user der sich 2mal eingeloggt hat.
Nun möchte ich dem einen seine session einfach beenden wenn ich merke das einer mit der selben SessionID schonmal eingeloggt ist.
Gibts da was wie ich die session von jemand andrem canceln kann
 
Warum musst du denn eine 'fremde' Session beenden?
Ich sehe da die folgenden Möglichkeiten:

- Warum benutzt du nicht die ASP.NET Features zur Forms-Authentication, sondern machst das alles so umstädnlich und manuell mit Sessions? Dann hast du die Probleme auch nicht :)

- Du kannst doch auch beim Laden des Login-Formulars schauen, ob der User eingeloggt ist und ihn sich nicht ein 2. Mal einloggen lassen.

- Du kannst beim abesenden des Formulars auch die aktuelle Session beenden
 
Jaa, wenn das alles so einfach wäre ;)
Ich nutze ja die ASP.NET validator aber bei ner Multiuser app kommt man um sesseions nicht rum.
Und ihn einfach nicht einloggenlassen kann ich auch nciht. d.h. Kann ich schon aber gegeben folgender Fall (Unwahrscheinlich aber wer weis...) Du bist in meinem System, machst was, gehts nach goggle und logst dich nicht bei mir auch. selbes browserfenster. Jetzt kommt irgendwer andres an den PC und logt sich auch bei mir ein (immernoch selbes browserfenster) der hat ja dann die selbe Session ID und damit alle deine SessionVariablen, und das sind potentielle Angriffs bzw. Fehlerpunkte. Ich will halt einfach dafür sorgen das jeder user 100% seine eigene SessionID hat. Noch schlimmer wirds wenn eine Person mehrer accounts hat, und sich dann mit beiden nacheinander einloggt, das könnte schon einen schlamassel geben. Und das einloggen kann ich nicht einfach verbieten, weil er ja dann 20min warten müsste bis die alte session verfällt bevor er sich mit dem 2tacc neu einloggen kann. Ich kann ihn auch nicht einfach auf die alte session packen und ins system schicken weil das wieder ein riesen Sicherheitsrisiko wäre. Ich hab mich jetzt dazu entschlossen einfach Session.Abandon() zu machen bevor der login kommt wenn ich merke das so einer schon drinen ist. Dann fliegen alle mit der Session ID raus das ist denke ich das sicherste.
 
Hallo,

Hab ein ähnliches Problem gehabt. Habe einerseits eine Session und damit auch eine Session bezogene UserVariable innerhalb des Session Elements. Um nun auszuschiessen, dass sich zwei User an einer Station, mit unterschiedlichen Benutzernamen, aber auch mit identischen Benutzernamen, einloggen hab ich folgendes gemacht:

Ausser dem Session Element, welches ja abhängig von der SessionID, Speicherbereich im IIS reserviert (in-process), steht Dir noch das Application Objekt zur Verfügung.
Wenn das Browserfenster nicht geschlossen wurde und jemand anderes will sich einloggen, dann ist das kein Problem, wenn die neuen Benutzerdaten einfach die bereits vorhandenen Daten im Session Objekt überschreiben und ggf. alte Datenbestände löscht.

Dieses Objekt ist für alle Benutzer sichtbar, also zugreifbar. Hier kannst Du ein beispielsweise das Tupel(UserName,HostIP) ablegen und beim Login nachsehen, ob der User oder diese Station bereits eingeloggt ist, wenn ja verweigerst Du einfach den Zugang.

Bei Logout muss natürlich darauf geachtet werden, dass das entsprechende Tupel in Application Objekt auch gelöscht wird...ausserdem sollten die Seiten auch nach einer bestimmten Zeit der inaktivität einen automatischen Login machen, damit Du diese Station vor lauter Sicherheitsmassnahmen nicht blockierst.

So hättest Du pro Session ID einen isolierten User und pro Station nur einen validierten User :p

Vielleicht hilft Dir das etwas weiter!

Gruß

Alex
 
Zuletzt bearbeitet:
Zurück