WebbisNet skrev:
...men just nu så loggas man ut när kakan förlorar sitt värde oavsett vad tiden i db står på
Ja.... det är ju kakan som håller reda på att man är inloggad, så något annat är inte att räkna med.
16 svar · 528 visningar · startad av WebbisNet
Jag har på webbisen.com gått över från sessioner till kakor och det har stabiliserat sidan en hel del, problemet är nu att när en användare rör sig på sidan så uppdateras tiden i db och det är den tiden jag vill kolla användarens aktiviteter med...men just nu så loggas man ut när kakan förlorar sitt värde oavsett vad tiden i db står på
<%UserID = Request.Cookies("webbisnet")("UserID")
If "" & UserID = "" Then
response.write "<script language='javascript'>"
response.write "parent.location.href='/timeout.asp'"
response.write "</script>"
else
mer kod här
end if%>
WebbisNet skrev:
...men just nu så loggas man ut när kakan förlorar sitt värde oavsett vad tiden i db står på
Ja.... det är ju kakan som håller reda på att man är inloggad, så något annat är inte att räkna med.
Har du verkligen tänkt över det där ordentligt?
Genom att använda kakor så kan ju vem som helst modifiera värdena i dem och t.ex. ändra UserId så de blir inloggade som någon annan.
Hmm, är inte cookies kodade så att enbart webbplattsen den kommer från kan läsa den? Om inte annat angets av sida som skapade cookien??
Finns det program för att ändra/läsa vad som står i en cookie? Vad står t.ex. här under??
Namn: WEBTRENDS_ID
Innehåll: 217.210.97.45-1040659504.29712326
Värd: https://www.falukuriren.se
lilja skrev:
Hmm, är inte cookies kodade så att enbart webbplattsen den kommer från kan läsa den? Om inte annat angets av sida som skapade cookien??
Nej, cookies är i klartext och kan enkelt manipuleras.
lilja skrev:
Finns det program för att ändra/läsa vad som står i en cookie?
Läsa cookien kan man alltid göra, och för att ändra värdet finns det många alternativ, beroende på webbläsare. Man ska helt enkelt inte använda cookies för att lagra känslig information.
Jag använder kakor för att lagra användarID under den tid medlemmen är på webplatsen, kan man inte uppdatera kakans tid då den skapades till aktuell tid då användaren byter sida på webplatsen
emission skrev:
Nej, cookies är i klartext och kan enkelt manipuleras.
Läsa cookien kan man alltid göra, och för att ändra värdet finns det många alternativ, beroende på webbläsare. Man ska helt enkelt inte använda cookies för att lagra känslig information.
WebbisNet skrev:
Jag använder kakor för att lagra användarID under den tid medlemmen är på webplatsen, kan man inte uppdatera kakans tid då den skapades till aktuell tid då användaren byter sida på webplatsen
Jag förstår inte riktigt vad du är ute efter.
1. Kakan försvinner inte så länge webbläsaren är igång, såvida du inte specifkt satt en expiretid.
2. Kakan är osäker oavsett vad du gör.
Jag använder kaka istället för sessionsID och kakan är nu satt till 90 minuter, men hur ska man kunna se till att kakan är aktiv om användaren är aktiv på webplatsen i ex 120 minuter......gick över till kaka från sessionsID eftersom kakan anses bättre
WebbisNet skrev:
Jag använder kaka istället för sessionsID och kakan är nu satt till 90 minuter, men hur ska man kunna se till att kakan är aktiv om användaren är aktiv på webplatsen i ex 120 minuter......
Sätt ingen expire överhuvud taget
WebbisNet skrev:
gick över till kaka från sessionsID eftersom kakan anses bättre
Självklart får du köra med kakor om du vill, men du måste vara medveten om att det är en stor säkerhetsrisk.
hur kan ett användarID vara en stor risk, inget användarnamn eller lösen finns ju i kakan
Det är ju användarID som du använder för att verifiera vilken användare man är och huruvida man är inloggad eller inte, så intrångsmöjligheten är total.
Varför inte sessions? Jag trodde att problemet var löst
Jag trodde också att Sessioner var mycket bättre?? Vad har du fått för information och från vilket ställe?
emission skrev:
Det är ju användarID som du använder för att verifiera vilken användare man är och huruvida man är inloggad eller inte, så intrångsmöjligheten är total.
Varför inte sessions? Jag trodde att problemet var löst
@nders föreslog kakor och det gjorde sidan stabilare än med sessions
WebbisNet skrev:
@nders föreslog kakor och det gjorde sidan stabilare än med sessions
Det stämmer, men din sida är så pass publik att det inte riktigt känns som en bra idé (kakor löser det förra problemet, men introducerar andra, skulle man kunna säga).
Som jag ser det finns det tre lösningar.
1. Gå tillbaka till sessions och undersök om det verkligen var ett problem, särskilt med desdecados kommentar i åtanke
2. Kör med cookies, men lägg inte userid i cookien utan ett annat userid (i samma tabell) som inte går att gissa sig fram till. Lämpligen ett GUID. Kör du SQL Server? MySQL?
3. Kör med cookies, men skapa egna "sessioner" i en sessionstabell (innehållande t.ex. userid, GUID,created och lastupdate) när någon loggar in. Den lösningen blir lika tajt som sessioner, men du kan styra över sessionens livslängd helt själv.
emission skrev:
Det stämmer, men din sida är så pass publik att det inte riktigt känns som en bra idé (kakor löser det förra problemet, men introducerar andra, skulle man kunna säga).
Som jag ser det finns det tre lösningar.
1. Gå tillbaka till sessions och undersök om det verkligen var ett problem, särskilt med desdecados kommentar i åtanke
2. Kör med cookies, men lägg inte userid i cookien utan ett annat userid (i samma tabell) som inte går att gissa sig fram till. Lämpligen ett GUID. Kör du SQL Server? MySQL?
3. Kör med cookies, men skapa egna "sessioner" i en sessionstabell (innehållande t.ex. userid, GUID,created och lastupdate) när någon loggar in. Den lösningen blir lika tajt som sessioner, men du kan styra över sessionens livslängd helt själv.
Har du nåt exempel på nummer 3? , för tillfället kör jag med access
Jag har inte tillgång till Access, men jag kan tänka mig att man kan göra så här (har testat principen i SQL Server):
1. Skapa en tabell för sessionerna
2. Sätt en kolumn i tabellen till Räknare, med datalängden Replikerings-ID
3. Gör kolumnen till primärnyckel
4. De övriga kolumnerna är UserID (tal), CreatedTS och LastAccessedTS (datum + tid)
Jag har aldrig provat detta i Access, men i SQL Server kör man med uniqueidentifier och funktionen newid() för att göra motsvarande. Informationen fann jag på http://www.devx.com/dbzone/Article/10167/1954?pf=true
4. Koda om din inloggning så att den skapar nya "sessioner"
'Vi förutsätter att du redan gjort själva inloggningen och därigenom fått ut användarens UserID
strSQL="INSERT INTO Sessions (UserID,CreatedTS,LastAccessed) VALUES(" & UserID & ",now(),now())"
objConn.execute strSQL
'Fulfix eftersom det inte verkar finnas någon funktion i Access som kan skapa GUID utan att lägga till rader
strSQL="SELECT TOP 1 GUID FROM Sessions WHERE UserID=1 ORDER BY CreatedTS DESC"
set rs=objConn.Execute(strSQL)
if not rs.eof then
'Grattis, ett nytt sessions-ID
strSessionID=cstr(rs(0))
Response.Cookies("GUID")=strSessionID
end if
5. Lägg in en include på varje sida, där du hämtar ut din vanliga UserID mha kakan, och framför allt, uppdaterar LastAccessedTS
Dim intAff, strGUID
strGUID=Request.Cookies("GUID")
if strGUID<>"" then
strSQL="UPDATE Sessions SET LastAccessed=now() WHERE GUID='" & replace(strGUID,"'","''") & "'"
objConn.execute strSQL, intAff
if Session("UserID")="" then 'Onödigt att komma om ASP-sessionen fortfarande lever
if intAff=1 then 'Det blev tydligen en träff på updaten, så vi går vidare
strSQL="SELECT UserID FROM Sessions WHERE GUID='" & replace(strGUID,"'","''") & "'"
set rs=objConn.Execute(strSQL)
if not rs.eof then
Session("UserID")=cint(rs(0))
else
'Borde inte kunna hända
end if
else
'Det fanns ingen session. Gör något åt saken.
end if
end if
else
'Tydligen inte inloggad, eller utan kakor
end if
Dessutom måste man lägga till kod som tar bort gamla sessioner (genom att kolla LastAccessed).
I exemplet har jag använt ASP-sessions för att lagra UserID, men i princip skulle du kunna använda en vanlig globalt dimmad variabel för att hålla UserID i och i så fall stänga av sessions helt (enablesessionstate=false). Är det mer värden än UserID som är intressanta så kan du hämta ut dem i samband med "SELECT UserID"-sökningen ovan (joina ihop med de tabeller du behöver)
Det funkade bra med vanliga Sessions?