Gå til innhold

Lage permanent innlogging


Anbefalte innlegg

Si jeg vil lage en startside hvor folk kan registrere seg og logge seg inn, f.eks. slik iGoogle gjør det. Hva er da den beste måten å gjøre at man blir holdt pålogget så lenge som mulig, og også om man åpner og lukker nettleseren? Sessions/cookies holder vel bare under én sesjon? Er det trygt nok å bruke IP-adressen?

Endret av madompa
Lenke til kommentar
Videoannonse
Annonse

Okei :)

 

Men skal jeg bruke sessions sammen med cookies, eller bare en simpel cookie? Er det slik at en session maks kan vare i 5 timer?

 

Altså, først sjekker jeg cookien, stemmer den så sjekker jeg om informasjon fra browseren stemmer? Bør jeg da la være å dobbeltsjekke med ip-adressen, siden den kan forandre seg?

 

Nettleserdetaljene er ikke unike for hver bruker, right? Men om cookien skulle feile, kan jeg bruke en kombinasjon av ip-adresse og nettleserdetaljer?

Lenke til kommentar

Altså det eg ville gjort er å lage ein unik hash for brukere når han logger inn, for eksempel sammensatt av brukerid og tid. Denne ville eg så ha lagt i ein cookie variabel. Deretter ville eg laga ein ny hash basert på informasjon om webleseren, ip addresse og den første hashen og lagra den i ein database eller liknande. Til slutt ville eg tatt iden i $_COOKIE, generet iden eg lagde i punkt to igjen, og sett om den matcher den i databasen.

 

// Steg 1
$id = md5($brukerid . microtime());
set_cookie('permlogin', $id, time()+60*60*24*365);

// Steg 2
$dbid = md5($id . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);
 // Lagre denne i databasen

// Steg 3
$testid = md5($_COOKIE['permlogin'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);
 // Skjekk denne mot brukertabellen og logg inn brukeren vist du finner ein match

Endret av Runar0
Lenke til kommentar
Altså det eg ville gjort er å lage ein unik hash for brukere når han logger inn, for eksempel sammensatt av brukerid og tid. Denne ville eg så ha lagt i ein cookie variabel. Deretter ville eg laga ein ny hash basert på informasjon om webleseren, ip addresse og den første hashen og lagra den i ein database eller liknande. Til slutt ville eg tatt iden i $_COOKIE, generet iden eg lagde i punkt to igjen, og sett om den matcher den i databasen.

 

// Steg 1
$id = md5($brukerid . microtime());
set_cookie('permlogin', $id, time()+60*60*24*365);

// Steg 2
$dbid = md5($id . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);
 // Lagre denne i databasen

// Steg 3
$testid = md5($_COOKIE['permlogin'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);
 // Skjekk denne mot brukertabellen og logg inn brukeren vist du finner ein match

Ser ikke dumt ut, takk.

 

Hvor ofte er det egentlig noen skifter ip-adresse? Er dét noe jeg bør ta til etterretning?

Lenke til kommentar
Tror eg har hatt samme ip siden eg skifta internett leverandør, det at folk skiftet ip ofte var i de dager da 56kbit og 128kbit ISDN var kult ;)

 

 

Tull tull tull tull tull tull. og jeg gjentar TULL. Om ipen din ikke skifter så har du nokk STATISK. IP adresse. Dette får du ikke fra Telenor, Tele2 og de fleste levrandører. men Du kan vel betale for å få det. jeg selv betalte 20kr måneden for å få det xD

 

Så for de aller fleste skifter vel ipen.

 

Det er vel egentlig ikke å identifisere med ip. plutselig så dukker det opp en fyr me proxy xD

 

Hilsen Dryper

Lenke til kommentar
Tror eg har hatt samme ip siden eg skifta internett leverandør, det at folk skiftet ip ofte var i de dager da 56kbit og 128kbit ISDN var kult ;)

 

 

Tull tull tull tull tull tull. og jeg gjentar TULL. Om ipen din ikke skifter så har du nokk STATISK. IP adresse. Dette får du ikke fra Telenor, Tele2 og de fleste levrandører. men Du kan vel betale for å få det. jeg selv betalte 20kr måneden for å få det xD

 

Så for de aller fleste skifter vel ipen.

 

Det er vel egentlig ikke å identifisere med ip. plutselig så dukker det opp en fyr me proxy xD

 

Hilsen Dryper

 

I teorien ja. Men i praksis har jeg f.eks. hatt samme IP adressen helt siden jeg skiftet leverandør. Det er snakk om at IPen kan endres når du f.eks. resetter router eller lar den være av i lengre tid, men i praksis har de fleste den samme IPen så fremt de ikke har grusomt ustabile linjer og mister tilkoblingen hele tida (i.e. får tildelt en ny IP fra ISPs DHCP server hele tida).

 

MEN

 

Det er ikke det samme som at IP addresse er en god måte å identifisere en bruker på, det er faktisk en elendig måte å gjøre det på ;)

Lenke til kommentar

jeg mener å ha lest at cookies med negativ utløpsdatotid vil vare evig i de fleste browsere.

 

session_set_cookie_params(time()-1000); //setter cookie lifetime til nåtid minus 1000 ms

session_start(); // starter session

session_regenerate_id(); // regenererer id som er en god ide når session'en brukes over en lang periode.

 

dette vil generere en session tabell på serveren som har en entry for hver bruker som noen gang har logget inn (det er mulig php har en timeout på hvor lenge den lagrer session data uavhengig av cookie lifetime. da vil ikke dette fungere like bra, men du vil heller ikke ha et så stort sikkerhetsproblem). det vanlige er å ha en tabell med entryer for hver bruker som er pålogget for øyeblikket. jo større session tabellen er jo større er sannsynligheten for at en angriper lykkes.

 

endring:

forresten. default lifetime for en session cookie er 0. dvs til browseren avsluttes. du kan jo sette den til time()+(30*24*60*60*1000) som er + 1 mnd frem i tid cirka. og så resette den hver gang brukeren er innom.

Endret av grimjoey
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...