Login med php

Tags:    php login mysql

Hej udviklere,

jeg har igennem tiden lavet rigtigt mange forskellige login-systemer, og jeg har hver eneste gang forsøgt at lave det bedre og bedre ud fra erfaring fra tidligere systemer.

Til at starte med har jeg ikke problemer med opbevaring af passwords. Jeg har et 128 karakter langt salt til brug sammen med brugeres password hvilket alt sammen bliver hashet lidt frem og tilbage.

Mit spørgsmål er mere til autentificering og verifikation af brugeren ved login. Jeg kører i øjeblikket blot på et test domæne - på den rigtige side vil hele siden køre over HTTPS.

Lige nu logger jeg brugere ind ved at finde deres brugernavn i databasen for derefter at kontrollere om det indtastede password matcher passwordet i databasen. Hvis det matcher, og brugeren kan logged ind, gemmer jeg brugerens session-id samt IP i datbasen til verifikation. Jeg gemmer også brugerens ID, username og en boolean værdi for at kontrollere om brugeren er logget ind eller ej.

Jeg kunne dog godt tænke mig at indføre mulighed for at forblive logget ind, hvilket vil sige jeg skal have fat i nogle cookies. Problemet for mig her er, at jeg ikke lige kan få mit hoved rundt om hvordan jeg kan sikre dette mest muligt. Er det rent faktisk muligt at bruge cookies til at huske en bruger, uden at cookie-stealing bliver et potentielt problem? Det vil naturligvis også skabe nogle komplikationer i min database i forhold til at gemme session-id og IP da brugeren nu kan være logget ind flere steder på en gang (hvilket heller ikke er noget problem).

Kunne godt tænke mig at høre hvad folk har af ideer og forslag til at lave mit login så sikkert som muligt?

På forhånd mange tak



3 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 9 karma
Sorter efter stemmer Sorter efter dato
Jeg er ikke så meget inde i at sikre cookies... Men noget browser fingerprinting (og en hash deraf) sat sammen med en hash af password + user id, alt sammen krypteret (bare symmetrisk) burde da gøre det?

Jeg husker da også at man kan sætte nogle regler når man sætter en cookie, for hvilke domæner der må forespørge den. Burde det ikke afhjælpe cookiestealing problemet langt hen af vejen? Og hvis den så kun forespørges over HTTPS (kan også sættes til kun at måtte blive det, så vidt jeg husker) så burde det problem vel være helt væk?

Sammen med fingerprinting af browseren, så burde det give et pænt forsvar mod hacking af den vej.



Indlæg senest redigeret d. 16.09.2011 20:55 af Bruger #14381
Ville bare overlade det til browseren at huske login, hvis brugeren ønsker det. Evt. justere tiden din session lever. Vil tro du på en måde med cookies skal gemme brugernavn og kodeord krypteret. Med de ukendte regler for cookies på vej ville jeg ikke personligt benytte cookies.



jeg ville gemme brugernavn og kode i en cookie som to hashes, og så bruge det til at logge ind med.

ellers en token løsning, lige hurtigt smidt lidt php sammen her, sikkert et par små fejl, men du kan se idéen, kan selvf laves på andre måder også.
(bare ik super optimalt hvis man har dynamisk ip eller bruger sin laptop fra flere netværk af.)
Fold kodeboks ind/udPHP kode 





t