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
Nej, sessionens referensId lagras i en cookie på klienten, inte det värde du ger din session.
Så det är alltså 100% säkert att göra som jag gör?
Tack! :bire :bire :f
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.
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?
Inte så bra...
Går att posta från eget formulär eller med JavaScript modifiera hidden-fält.
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 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.