webForumDet fria alternativet

Session - ej säkert?

ASP

9 svar · 348 visningar · startad av koltrasten

Medlem sedan okt. 2002272 inlägg
Frågan#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

Medlem sedan feb. 20012 412 inlägg
#2

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

Medlem sedan okt. 2002272 inlägg
#3

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

Medlem 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.

Medlem sedan okt. 2002272 inlägg
#5

Tack

Medlem 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?

Medlem 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.

Medlem 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)

Medlem 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.

Medlem sedan okt. 2002272 inlägg
#10

Tack!

463 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
326 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
325 ms — ändringar (db)