"Erling Sørensen" <erling_deletethis@nvn.dk> skrev i en meddelelse news:4701d41f$0$93811$edfadb0f@dread16.news.tele.dk...
>
> "Michael Weber" <michael@removemichaelweber.dk> skrev i en meddelelse
> news:47017ea1$0$63789$edfadb0f@dread14.news.tele.dk...
>
> >> Hvis session.timeout så bliver overskredet, kan du jo dykke ned i din
> >> database og lede efter en matchende sessionID.
>
> >Matchende med hvad ?
>
> >Prøv at opdatér en side efter 2 minutter, indeholdende :
> ><%
> > Session.Timeout = 1
> > Response.Write Session.SessionID
> >%>
>
> Du har fuldkommen ret.
> Jeg tog det egentlig for givet, at sessionID fangede Session ID fra
> klientens request.
> Som du konstaterede r det ikke tilfældet. Beklager det forkerte svar.
Tjaee....du er inde på noget rigtigt, nemlig at serveren gemmer session-data i cookies, hvis den kan slippe afsted med det i.e.
klientens browser tillader det.
Men denne cookie er en session-cookie, der slettes når sessionen udløber.
Prøv at afvikle ovenstående kode lokalt i f.eks. Mozilla ( og kig i Cookie-manageren->.Stored Cookies (Site = localhost))
Læg i øvrigt mærke til at SessionID tælles op med 1 ved generering af nyt SessionID.
Prøv dernæst at Blokerer for cookies fra Localhost og se at der generes nyt SessionID hvre gang siden opdateres, på trods af
Session.Timeout perioden.
Grunden til at session-cookies indeholdende en hashed sessionid udløber ved session-slutning, er formentlig fordi serveren kun anser
sessionid´s for unikke i applikationens levetid og ikke ultimativt unikke.
Hvis serveren f.eks. genstartes, er kollision på SessionID teoretisk muligt, hvilket vil betyde at
2 brugere kan benytte samme SessionID som nøgle, hvis dette er gemt f.eks. som nøgle i en database.
Eksempel :
SessionID er 2001
ny bruger får SessionID 2001
ny bruger får SessionID 2002
o.s.v.
Antager at serveren genstartes.
Nu er det teoretisk muligt at serveren starter SessionID-tælleren ved f.eks. 2001
ny bruger får SessionID 2001
ny bruger får SessionID 2002
Ups...kollision, hvis man har brugt SessionID i databasen.
F.eks. hvis man gemmer SessionID i en Cookie, der udløber i 2008 og
bruger samme cookie til automatisk at logge ind på sitet.
Derfor fraråder MS at bruge SessionID som f.eks. nøgle i databaser.
Læs mere om cookies her :
http://msdn2.microsoft.com/en-us/library/ms972338.aspx
Med venlig hilsen
Michael Weber