vraag over een inloggen met cookies

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen kolkman

jeroen kolkman

13/06/2015 21:00:46
Quote Anchor link
Hey mensen,

ik ben momenteel bezig met een projectje waar ik al een hele tijd mee in mijn hoofd loop.
Het gaat om een soort social media achtige pagina.

Omdat het social media is is beveiliging natuurlijk extra belangrijk.
Nou ben ik bezig een met het login systeem maar ik zit even met een vraag mbt. het inloggen, het gebruik van cookies in het bijzonder.

Ik wil het voor mensen makkelijk maken om in te loggen en ingelogd te blijven.
So far niks nieuws. Ook het ingelogd blijven op meerdere plekken is niks nieuws.
Ik weet dat ik dit met sessies kan doen die ik in de database opsla.

Maar is mijn problem waar ik tegenaan loop.
Hoe controleer ik met behulp van cookies of iemand is ingelogd op een veilige manier.

Nou heb ik daar een idee over en wil graag weten wat jullie er van denken of dat jullie ideeën hebben om dat netjes en veilig te doen.

Wat ik bedacht had is als volgt.

zodra de gebruiker de juiste gegevens heeft ingevuld voor het inloggen dan worden er een aantal gegevens verzameld.
1. Datum en tijd van inloggen
2. Session ID
3. Username

de datum tijd en Session id worden gehashed en in de cookie geplaatst same met de username.
Daarna wordt de username en de hash samengevoegd en nogmaals gehashed.
Deze hash gaat same met de username, date time de database in.

zodra de persoon weer op de website komt en de website de cookie ziet pakt hij de username en hash eruit en hashed deze.
deze hash die daaruit komt staat in de database en daarmee kan ik dan weer exact zien welke user het is en of hij daadwerkelijk is ingelogd geweest.

tot zover dus mijn idee.

Ik denk dat door het gebruik van de custom hash functie in mijn systeem er geen mogelijkheid is tot spoofen mits de inbreker weet hoe de hash wordt gegenereerd.
De username en hash in de cookie zijn ook nog eens tijd specifiek dus deze is altijd uniek en niet te achterhalen.
Plus omdat de username en hash same een andere hash hebben kunnen kwaadwillende hier helemaal niks mee.
zelfs een brute force attack zou niet kunnen aangezien het mijn plan is om mensen 3x 3 pogingen te blokkeren van de website.

Maar ja ik zou het zeer waarderen als jullie mij jullie visie zouden kunnen geven hierop.
Alvast bedankt!

Groeten,
Jeroen
Gewijzigd op 13/06/2015 21:02:52 door Jeroen kolkman
 
PHP hulp

PHP hulp

03/12/2021 01:47:07
 
Thomas van den Heuvel

Thomas van den Heuvel

13/06/2015 22:13:28
Quote Anchor link
Jeroen kolkman op 13/06/2015 21:00:46:
Ik denk dat door het gebruik van de custom hash functie in mijn systeem er geen mogelijkheid is tot spoofen mits de inbreker weet hoe de hash wordt gegenereerd

Security through obscurity is nooit een fantastisch ontwerpprincipe.

Ik zou het vooral simpel houden. Je sessie ($_SESSION) blijft je leidraad. Als je inlogt sla je minimale informatie op in je sessie, bijvoorbeeld enkel een user id. Elke page-access haal je bijbehorende data + credentials op uit je database zodat er geen verouderde userdata in je sessie blijft hangen.

Als je er vanuit kunt gaan dat gebruikers op "vaste apparaten" een vast IP hebben zou je een "remember me" functionaliteit kunnen toevoegen die heel simpel werkt: je houdt in een aparte tabel een random hash bij met een bepaalde levensduur, die gekoppeld is aan een user id met een bijbehorend ip. Deze hash sla je als waarde op in een remember-me cookie.

Wanneer iemand je site bezoekt, en niet ingelogd is (geen user id in sessie) maar wel een remember-me cookie heeft, controleer je je tabel op een geldige hash + ip (en levensduur uiteraard) en log je iemand automatisch onder water in. Hierbij kun je dan ook de levensduur van de hash eventueel verversen.

Dit lijkt mij een redelijk simpele en veilige manier die niet loopt te sleuren en te pleuren met allerlei moeilijke constructies met hashes en cookies met echt gehashte data.

En als het echt veilig moet dan zou je mogelijk in eerste instantie moeten gaan denken aan HTTPS.
Gewijzigd op 13/06/2015 22:16:51 door Thomas van den Heuvel
 
Jeroen kolkman

jeroen kolkman

13/06/2015 22:41:33
Quote Anchor link
Bedankt voor je reactie Thomas.

Ik ben het principe van een remember me cookie iets te moeilijk aan het maken schijnbaar.
Bedankt voor je tips ook.
Ik dacht altijd dat zoiets misschien niet veilig is aan de andere kant is de hash in de cookie dan natuurlijk ook niet echt na te maken, plus dat hij ook nog eens in de database moet staan.

nogmaals bedankt voor de informatie.
Ik ga eens kijken hoe ik het kan implementeren.

Toevoeging op 14/06/2015 18:32:12:

Ik wou even een update geven over de manier die ik nu gebruikt heb voor het gebruik van cookies.

Ik heb uit eindelijk de manier die Thomas heeft voorgesteld gebruikt.

Na het inloggen en kiezen van de optie 'remember me' wordt er in de database een record aangemaakt met een user_id, session_hash en een timeout datetime.

De user_id spreekt voor zich, de session_hash is een random gegenereerde hash die ik in de cookie opsla en in de database dus en de timeout spreekt ook voor zich.
Hierbij is het wel dat de time out die de database ingeschoven wordt ook wordt gebruikt voor de cookie. Dit gebruik ik eigenlijk als een soort van 2 wegs verificatie waardoor als de cookie timeout handmatig is aangepast hij nooit kan werken als de database een compleet andere timeout tijd heeft.

nogmaals bedankt voor de tips Thomas.
alles werkt nu precies zoals ik het voor ogen had.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.