24. juni 2003 - 17:18Der er
7 kommentarer og 1 løsning
Login vha. sessions og cookie. Sikkerhedsspørgsmål
Hej.
Jeg har oprettet dette spørgsmål for at få råd om, hvordan jeg skal lave mit loginsystem.
Jeg har et login-script. Hvis der i dette script vælges, at auto-login skal slås til, så oprettes der en cookie med login-info (cookien bliver KUN oprettet, hvis brugernavn og pass er korrekt)
Hvis auto-login er slået fra, oprettes et par sessions, med brugernavn og password (Sessions bliver KUN oprettet, hvis brugernavn og pass er korrekt)
Da jeg har adskillige sider som jeg ønsker at beskytte (siderne må KUN vises hvis et login er foretaget), har jeg placeret et tjek, som først tjekker om der er sessions eller en cookie til stede med de nødvendige informationer, og efterfølgende tjekker, om disse informationer er korrekte.
Nu er mit spørgsmål : Er det "overkill", at lade sidstnævnte tjek "tjekke" username og password endnu engang ? Det er jo allerede gjort under login. Eller er det trodsalt fornuftigt ? Så vidt jeg kan se, kunne man i princippet bare oprette en cookie med det navn som mit system ellers opretter, og så få adgang til hele sitet - uden at have angivet brugernavn og password.
Vil det blive et tungt arbejde for mit website/server/besøgende, at der laves et sådan tjek på hver eneste side ? Jeg vil meget gerne sikre mig, at folk er logget ind når de benytter mit website.
Hej creator. Jeg har selv været i samme situation, og har valgt, indtil videre, ikke at bruge cookies. Dette er ikke et sikkerhedsspørgsmål, men blot en feature jeg ikke mener mine brugere på dette site har brug for lige nu.
Jeg mener ikke at det er overkill at lade dit system checke username og password igen. Det er en del af sikkerheden. Det er jo muligt, som du selv skriver, at oprette cookies selv.
Hvis du er bekymret over for meget kommunikation, så brug session variabler. $_SESSION['loggedin'] f.eks... Jeg laver mit check i login-delen, og opretter ovenstående variabel, og tilskriver den en værdi. Da de er session baseret, forsvinder de når explorer vinduet lukker.
Hvis du vil være lidt smart, så lav en enkelt php fil med dit check, og så bare i toppen af hver af dine sider lav "include("logincheck.php)".
denne fil kan f.eks. indeholde
if (!$_SESSION["loggedin"]=="jeg er logget ind værdi") { echo "jeg er ikke logget ind!"; exit(); }
exit() betyder at den bare stopper al udførsel på den side, så en bruger, der ikke er logget ind, kommer ikke længere.
Jeg har ikke skrevet koden helt ud i detaljer, da du tilsyneladende har mere end nok indsigt i selve programmeringen, det var mere et spørgsmål om kommentarer og råd.
Håber du har fået lidt hjælp, og hvis du har flere spørgsmål, eller jeg mangler at uddybe enkelte punkter, så bare til.
Mange tak for jeres råd. Jeg er glad for den længere forklaring. Men jeg har nu tænkt mig at holde mig til min Cookie. Jeg kan godt lide, at folk ikke skal tænke på login :-)
Ideen med en include, er nu også ret fornuftig. Og exit-tingen, var også smart. så jeg har bestemt fået nogle ideer at arbejde videre med :-)
En anden vigtig/smart sikkerhedsfeature er at gemme passwords krypteret. I både PHP og MySQL kan det gøres med MD5 funktionen. I de senere udgaver af MySQL er der kommer SHA som kan betragtes som en kryptografisk forbedret udgave af MD5. For at tjekke det rå indtastede password mod det krypterede lagrede password, krypterer du det indtastede og tjekker om de to krypterede passwords er ens.
Jo da.. Her er forklaret flere forskellige krypteringsfunktioner som understøttes af MySQL: http://www.mysql.com/doc/en/Miscellaneous_functions.html Desuden er MD5 så vidt jeg ved baseret på en åben algoritme, så med lidt hjælp fra google skulle du nok kunne få en fuld dokumentation over hvordan MD5 udregnes.
Synes godt om
Ny brugerNybegynder
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.