WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   "Kom ihåg mig" - säkraste sättet (https://www.wn.se/forum/showthread.php?t=38651)

BoXon 2009-08-22 13:25

"Kom ihåg mig" - säkraste sättet
 
Hej!

Sitter och programmerar en inloggning som jag vill ska ha en "kom ihåg mig" funktion.

Jag funderar dock vad som är säkrast att göra? Min ide just nu är att lagra
användarens uppgifter i hans egen cookie fil, och med dessa sedan göra en
virtuell inloggning (och med en session kontrollera att detta bara görs vid första besöket, och inte vid varje uppdatering). Och sedan som vanligt sätta
en session som dör när man stänger sidan. Min sida går ju så säker som den
kan, men hur är det med användarens säkerhet?

Förslag och synpunkter mottages. :)

_Michael_ 2009-08-22 13:46

En bra idé kan vara att i användarens cookie endast spara en nyckel (ej kopplad till användarens lösenord) och i db:n spara t.ex. dennes user agent.
Det försvårar för någon som kommit över användarens cookie att själv logga in med den.
Varje gång som någon gör en "vanlig" inloggning med sitt användarnamn samt lösenord kan man i databasen då spara en ny nyckel och user agent vilket gör den tidigare cookien inaktuell. Låt oss säga att användaren sitter på en dator där andra har tillgång (Internetcafé eller vad som helst) och av misstag/okunskap valt att bli ihåg kommen, då löser det sig självt när användaren loggar in på nästa ställe. För de som vill använda funktionen på t.ex. både hemmet och arbetet uppstår såklart problem...

Magnus_A 2009-08-22 15:03

Spontant tycker jag inte att man ska lagra annat än en nyckel i användarens kakburk, själva inställningarna lägger man i databas eller dylikt.

BoXon 2009-08-22 15:04

Borde detta kunna fungera bra då?

Kom ihåg mig:

1. Generera en sträng med slumpade tecken
2. Spara tecknen & user agent i databasen
3. Sätt en cookie med samma tecken
4. Skapa en session för användaren

Vid nästa besök:

Finns en cookie men ingen session:
1. Kolla om den matchar någon med samma ID & user agent.
2. Gör den det: Skapa en session för användaren & generera ny sträng som sparas i cookien & databasen
Om inte: Ta bort cookien.

_Michael_ 2009-08-22 15:18

Citat:

Originally posted by BoXon@Aug 22 2009, 15:04
Borde detta kunna fungera bra då?

Kom ihåg mig:

1. Generera en sträng med slumpade tecken
2. Spara tecknen & user agent i databasen
3. Sätt en cookie med samma tecken
4. Skapa en session för användaren

Vid nästa besök:

Finns en cookie men ingen session:
1. Kolla om den matchar någon med samma ID & user agent.
2. Gör den det: Skapa en session för användaren & generera ny sträng som sparas i cookien & databasen
Om inte: Ta bort cookien.

Mycket säkrare än så är det nog svårt att få en kom ihåg mig-funktion :)

SimonP 2009-08-22 15:19

Att enbart använda User Agent som salt ger inte speciellt mkt säkerhet, lägg även på IP-nr så får du en betydligt säkrare "kom ihåg".

_Michael_ 2009-08-22 15:21

Citat:

Originally posted by SimonP@Aug 22 2009, 15:19
Att enbart använda User Agent som salt ger inte speciellt mkt säkerhet, lägg även på IP-nr så får du en betydligt säkrare "kom ihåg".
Sant men väldigt många användare får då problem för att de har dynamiskt IP...

crazzy 2009-08-22 15:40

Citat:

Ursprungligen postat av _Michael_
Citat:

Ursprungligen postat av SimonP
Att enbart använda User Agent som salt ger inte speciellt mkt säkerhet, lägg även på IP-nr så får du en betydligt säkrare kom ihåg.

Sant men väldigt många användare får då problem för att de har dynamiskt IP...

Jag har dynamiskt ip, men jag har haft samma ip sen jag flyttade hit... (ett halvår)

BjörnJ 2009-08-22 15:42

Hur lång bör nyckeln vara? Minst 128 bitar antar jag.

Bör man även sätta user-id (eller annan unik integer) som cookie och i "auto-login-tabellen"? Alltså för att ha en indexerad integer att söka efter i databasen.

Det kan nog vara bra att spara giltighetstid också i databasen.

Man kanske även bör ha koll på om det kommer många inloggningsförsök med olika nycklar från samma IP inom en viss tid.

Angående att spara user agent så höjer det förstås säkerheten, men som sagt kan det ställa till problem om användaren vill ha autoinloggning både på jobbet och hemma, eller om hen har flera olika webbläsare på sin dator.

Cookien kanske bör ha en viss giltighetstid som aldrig förnyas, så att cookien kommer att försvinna efter ett tag från publika datorer om någon skulle ha gjort misstaget att vällja "kom ihåg inloggning" på en sådan dator. När cookiens gilitighetstid tar slut raderas den och användaren blir tvungen att logga in igen.

Om användaren väljer att logga ut bör cookien raderas.

Draqir 2009-08-22 15:47

User agent är inte direkt alltid statiskt. Beror på vad du har för ISP, ibland kan det växla under bara ett enda request. :P


Alla tider är GMT +2. Klockan är nu 16:23.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson