23. januar 2009 - 20:59Der er
7 kommentarer og 1 løsning
Sikre sig at sessions ikke bliver ændret
Kan man på nogen måde, sikre sig at sessions ikke bliver ændret et eller andet sted i processen, uden at benytte sig af SSL? Sådan at en bruger ikke kan rette sin session userid til noget andet og pludselig se en anden brugers informationer. Selvfølgelig er mit eksempel lidt enkelt, men hvordan sikrer man sig bedst imod den slags?
Du kan gemme forskellige oplysninger om brugeren. F.eks. browsernavn, version, hans ip adresse, etc. Hvis det ikke passer, så skal han bare nægtes adgang.
Jeg har tænkt på at gemme oplysninger om dem der er logget ind i databasen, men vil det ikke give problemer, når de skal logge ind næste gang evt fra et andet sted.
Man kan ikke ændre sessions, det er umuligt uden at "stjæle sessionen" fra en anden bruger, formodentligt ved at snuppe cookie med sessionID fysisk fra pc.
Sessions ligger på serveren og referencen er en cookie (eller query/form baseret) og kan ikke ændres af klienten uden sårbar kode. Men man kan stæle andres.
jokkejensen, Det er ikke umuligt. Det kaldes session hijacking (eller sidejacking)... Det kan også lade sig gøre med cross site scripting (XSS) og selvfølgelig som du selv skriver, ved fysisk adgang...
Du kan sikre dig (bedre) imod sidejacking og hijacking ved at lave din session key lang - Derudover bør du regenerere session id regelmæssigt (se session_regenerate_id)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.