Avatar billede webcreator Nybegynder
24. juni 2003 - 17:18 Der 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.

Systemet er baseret på PHP/MySQL

Gode råd modtages gerne :-)
Avatar billede webcreator Nybegynder
24. juni 2003 - 18:56 #1
Har jeg givet for få points til et par fif ? :-)
Avatar billede lkoudal Nybegynder
24. juni 2003 - 21:38 #2
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.
Avatar billede andy Nybegynder
25. juni 2003 - 11:14 #3
Du skal da helt klart tjekke username og password på alle dine undersider. En ekstra sql query bør ikke stresse dit system.
Avatar billede webcreator Nybegynder
25. juni 2003 - 11:32 #4
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 :-)

Andy > Også tak for din kommentar :-)
Avatar billede xyborx Nybegynder
26. juni 2003 - 11:53 #5
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.
Avatar billede lkoudal Nybegynder
26. juni 2003 - 12:02 #6
det er faktisk en god ide, det tror jeg lige jeg implementerer i mit system også.
Avatar billede webcreator Nybegynder
26. juni 2003 - 12:04 #7
Findes der noget dokumentation og eksempler på brug af MD5 ? Eller det andet system for den sags skyld?
Avatar billede xyborx Nybegynder
26. juni 2003 - 12:44 #8
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.
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