webForumDet fria alternativet

Session - ej säkert?

9 svar · 344 visningar · startad av koltrasten

koltrastenMedlem sedan okt. 2002272 inlägg
#1

Hej!
Jag har en moderatorfunktion och för att man skall få access till denna måste ett databasfält innehålla användarens ID. Denna kollar alltså:

<%
If Session("ID")=RecSet("ID") Then
' Tillåt se moderatorsidan
End If
%>

Men jag har nu fått höra att sessionsvariabler lagras även i klientens dator. Kan han under tiden han är inloggad bara ändra Session("ID") till ett ID som han vet tillhör en moderator och sedan få access till databasen?
Eller? :OO

Jörgen HPMedlem sedan feb. 20012 412 inlägg
#2

Nej, sessionens referensId lagras i en cookie på klienten, inte det värde du ger din session.

koltrastenMedlem sedan okt. 2002272 inlägg
#3

Så det är alltså 100% säkert att göra som jag gör?
Tack! :bire :bire :f

Jörgen HPMedlem sedan feb. 20012 412 inlägg
#4

Jag har inte sagt att din kodning är 100% säker, men det går inte ändra en session allt för enkelt. Säkerhetsbrister ligger snarare i defekter hos kodaren/applicationen, än i själva användandet av sessions.

koltrastenMedlem sedan okt. 2002272 inlägg
#5

Tack

koltrastenMedlem sedan okt. 2002272 inlägg
#6

Hur är det att använda hidden då?

<%If Session("ID")=RecSet("ID") Then%>
    <form method="POST" action="redigera.asp">
    <input type="hidden" name="moderator" value="ja">
    <input type="submit" value="redigera">
    </form>
<%End If%>

...och sedan kan jag bara ha på nästa sida:

If Request.Form("moderator") = "ja" Then
' Tillåt visa sidan
Else
' Du har gjort en förbjuden åtgärd
End If

Hur är säkerheten med denna lösning? Kan man lura hidden?

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#7

Inte så bra...
Går att posta från eget formulär eller med JavaScript modifiera hidden-fält.

koltrastenMedlem sedan okt. 2002272 inlägg
#8

Då måste jag använda Sessions?

(man blir ju lite rädd av en redan pågående tråd som går jämsides med denna)

OveRRidEMedlem sedan feb. 200112 078 inlägg
#9

Det räcker oftast med en sessions-variabel enligt mig. Och den är en sträng som innehåller två integervärden som säger vilken nivå användarens rättigheter är på (om man nu har några sådana) samt vilket userId användaren har.

Alltså borde strängen se ut ungefär som nåt sånt här:

session("user") = rs("usrRattighet") & "_" & rs("usrUserId")
'strängen är alltså t.ex. [red]2_346[/red].

Skapa sedan en funktion som du kan inkludera på alla sidor för att få ut värdet till två variablar.

koltrastenMedlem sedan okt. 2002272 inlägg
#10

Tack!

133 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)