Archief - PHP: login met "remember me"

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

yannick

Legacy Member
Goedemiddag,

Ik ben bezig met een site en ik heb de login al geschreven (met sessies enzo). Het werkt perfect, enkel vergeet hij altijd de username en het password als ge u browser afsluit (logisch ook :)) waardoor ge dus altijd opnieuw moet inloggen.

Nu zou ik graag een systeem implementeren dat vele site gebruiken, de"remember me" functie. Moet ik hiervoor met cookies werken waar ik dan de username en het password inzet of hoe zit dit juist? Ik heb al wat gegoogeld, maar ik weet niet echt naar waar ik moet zoeken (weet zelfs niet of het met cookies moet :))

mvg

Yannick Wellens

Tyfius

Legacy Member
Je kan in die cookie zowel de gebruikersnaam als het (liefst encoded) wachtwoord van de gebruiker opslaan. De gebruikersnaam ophalen uit de cookie en de encoded string dat het wachtwoord moet voorstellen vergelijken.

Je kan ook alleen de gebruikersnaam opslaan, en in je database een veldje voorzien 'remember', waarin je dan bvb de waarde 1 en 0 kunt setten.

iamdesign

Legacy Member
nooit uw wachtwoord in een cookie steken!!!

maak een eigen mengsel van ID, geboortedatum, eerste letters voornaam... volgens een bep patroon, heel wat veiliger :)

Dece

Legacy Member
meestal smijt ik het wachtwoord volgens een welbepaald stramien door elkaar en hatch ik het ook anders.

bv 2 kolommen in uw tabel: paswoord, salt
md5(md5(salt + paswoord + salt) + md5(salt) + md5(paswoord));

En dan gewoonweg één of meerdere welbepaalde delen uit dat gegenereerde wachtwoord halen. (Bij voorkeur een 10-tal)

Radiance

Legacy Member
Tyfius zei:
Je kan ook alleen de gebruikersnaam opslaan, en in je database een veldje voorzien 'remember', waarin je dan bvb de waarde 1 en 0 kunt setten.
No offence, maar dat is echt wel een slecht idee.
Als ik dat zie heb ik op 2 secoden mijn username in de cookie veranderd in de uwe hoor ..

Het wachtwoord of directe hash daarvan gebruiken als cookie is ook geen goed idee, cookies kunnen vaak ingelezen worden door javascript of andere gebruikers van de pc.

Speel niet met de veiligheid van uw gebruikers en sla nergens hun wachtwoord op. Zeer veel mensen gebruiken overal hetzelfde wachtwoord, het enige dat je daarvan wil opslaan is een hash in uw database.

Goede oplossing voor cookies is idd de gebruikersnaam (of een userid) op te slaan samen met één of andere random hash, stel je samen met zijn bv. gebruikersnaam, eventuele andere velden & zelf prefeer ik hier ook de timestamp in te steken zodat deze wanneer je uitlogt & terug inlogt veranderd is. Dat voorkomt dat ik éénmalig de cookies uw computer kopiëer & jij er niks aan kan doen dat ik hiermee blijft & blijf inloggen. Als je één keer uitlogt is de gekopiëerde cookie volledig nuteloos.
Je slaat die hash ook op in je database & kan simpelweg controleren of die in de cookie dezelfde is.

Tyfius

Legacy Member
Jah, 't is inderdaad geen goed idee, maar een snelle oplossing.

Zelf werk ik ook op de manier zoals jij beschrijft, veel veiliger.

yannick

Legacy Member
Radiance zei:
No offence, maar dat is echt wel een slecht idee.
Als ik dat zie heb ik op 2 secoden mijn username in de cookie veranderd in de uwe hoor ..

Het wachtwoord of directe hash daarvan gebruiken als cookie is ook geen goed idee, cookies kunnen vaak ingelezen worden door javascript of andere gebruikers van de pc.

Speel niet met de veiligheid van uw gebruikers en sla nergens hun wachtwoord op. Zeer veel mensen gebruiken overal hetzelfde wachtwoord, het enige dat je daarvan wil opslaan is een hash in uw database.

Goede oplossing voor cookies is idd de gebruikersnaam (of een userid) op te slaan samen met één of andere random hash, stel je samen met zijn bv. gebruikersnaam, eventuele andere velden & zelf prefeer ik hier ook de timestamp in te steken zodat deze wanneer je uitlogt & terug inlogt veranderd is. Dat voorkomt dat ik éénmalig de cookies uw computer kopiëer & jij er niks aan kan doen dat ik hiermee blijft & blijf inloggen. Als je één keer uitlogt is de gekopiëerde cookie volledig nuteloos.
Je slaat die hash ook op in je database & kan simpelweg controleren of die in de cookie dezelfde is.

Dus als ik het goed begrijp:

In cookie: Gebruikersnaam + mixup van password voornaam en achternaam (om zomaar iets te zeggen) + de datetime van de login.

In database: Gebruikersnaam + de mixup + en de logindatetime(die heb ik zowieso erin stn).

Heb ik dit al juist? Zo ja, heb ik toch nog een vraagje:

1. ik heb gelezendat cookies maar een bepaalde tijd geldig blijven. Hoe kan ik dit oplossen (door telkens een nieuwe cookie aan te maken telkens als de persoon de site bezoek en ingelogd is of is het niet zo simpel?).

Bedankt al voor de hulp, want k ben nog maar beginner :)

orez

Legacy Member
yannick zei:
1. ik heb gelezendat cookies maar een bepaalde tijd geldig blijven. Hoe kan ik dit oplossen (door telkens een nieuwe cookie aan te maken telkens als de persoon de site bezoek en ingelogd is of is het niet zo simpel?).

Deze "expire time" stel je zelf in. Dus jij bepaald hoelang die geldig blijft.
En als je werkt via de manier zoals radiance beschrijft, wordt uw cookie regelmatig herschreven, dus dit vormt niet echt een probleem, tenzij personen voor een zeer lange tijd inactief zijn.

Radiance

Legacy Member
Ter verduidelijking, ik bedoelde 2 cookies zetten :
* username
* hash, bv. md5($username . time());
Enige nadeel van een hash gebruiken die telkens veranderd : gebruikers kunnen niet wisselen tussen computers met eenzelfde account zonder op de andere uitgelogd te geraken. Persoonlijk vind ik dat het waard in de meeste gevallen, maar dat moet jij weten.

En in uw database zet je een cookiehash veldje met dezelfde waarde als hash.
Dus dit doe je wanneer de gebruiker inlogt.

Per pagina controleer je in deze volgorde :
1) zijn de nodige sessie variabelen gezet, indien ja -> ok, ga verder
2) indien nee : bestaat de username cookie & komt de cookie hash waarde overeen met die uit de database, indien ja -> ok, ga verder
3) indien nee : ga naar login of access denied venster

Opslaan van de last login time kan eventueel ook handig zijn ja, zo kan je zelf wat bijhouden dat cookies tijdig opnieuw geset worden. Hoe lang je een cookie wil bijhouden moet je zelf weten.

yannick

Legacy Member
Radiance zei:
Ter verduidelijking, ik bedoelde 2 cookies zetten :
* username
* hash, bv. md5($username . time());
Enige nadeel van een hash gebruiken die telkens veranderd : gebruikers kunnen niet wisselen tussen computers met eenzelfde account zonder op de andere uitgelogd te geraken. Persoonlijk vind ik dat het waard in de meeste gevallen, maar dat moet jij weten.

En in uw database zet je een cookiehash veldje met dezelfde waarde als hash.
Dus dit doe je wanneer de gebruiker inlogt.

Per pagina controleer je in deze volgorde :
1) zijn de nodige sessie variabelen gezet, indien ja -> ok, ga verder
2) indien nee : bestaat de username cookie & komt de cookie hash waarde overeen met die uit de database, indien ja -> ok, ga verder
3) indien nee : ga naar login of access denied venster

Opslaan van de last login time kan eventueel ook handig zijn ja, zo kan je zelf wat bijhouden dat cookies tijdig opnieuw geset worden. Hoe lang je een cookie wil bijhouden moet je zelf weten.

Bedankt voor de hulp allemaal. Kheb nog wel wa te leren ivm php, maar dit help me al een eind verder :)

mvg
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan