Avatar billede ducks Nybegynder
23. januar 2009 - 20:59 Der 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?
Avatar billede locke Nybegynder
23. januar 2009 - 21:11 #1
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.
Avatar billede locke Nybegynder
23. januar 2009 - 21:13 #2
Men er det en bruger, som sidder på samme netværk som den, han vil udnytte, og dermed kan sniffe trafikken, så er problemet lidt et andet.
Avatar billede ducks Nybegynder
23. januar 2009 - 21:37 #3
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.
Avatar billede jokkejensen Novice
23. januar 2009 - 23:12 #4
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.
Avatar billede coderdk Praktikant
24. januar 2009 - 01:45 #5
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)
Avatar billede ducks Nybegynder
12. februar 2009 - 15:24 #6
Tak!

Jeg har lavet følgende i toppen af koden:

    $session_data = $_SESSION;
   
    $_SESSION = array();
   
    if (isset($_COOKIE[session_name()]))
        setcookie(session_name(), '', time()-42000, '/');
   
    session_destroy();
   
    session_start();
    session_regenerate_id(TRUE);
   
    $_SESSION = $session_data;


Går ud fra det var sådan noget du mente?
Avatar billede ducks Nybegynder
12. februar 2009 - 15:37 #7
Nå ja, så har jeg valgt at kryptere følsomme sessions
Avatar billede ducks Nybegynder
11. oktober 2010 - 09:42 #8
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester