Onthoud mijn gegevens
Houdie!
Ben ik (alweer ;) )! Ik wou graag een beetje hulp met cookies, om precies te zijn, cookies voor onthoud mijn gegevens. Als ik het goed heb gebruik je bij de functie onthoud mijn gegevens (bij login) met cookies. Maar hoe werkt dit? En wat is het voordeel ervan? ALvast bedankt voor respons.
Ben ik (alweer ;) )! Ik wou graag een beetje hulp met cookies, om precies te zijn, cookies voor onthoud mijn gegevens. Als ik het goed heb gebruik je bij de functie onthoud mijn gegevens (bij login) met cookies. Maar hoe werkt dit? En wat is het voordeel ervan? ALvast bedankt voor respons.
Het slaat je username en wachtwoord op in een cookie. Alleen is het inmiddels behoorlijk achterhaald.
Ik vind het het kwalijk dat die moeten worden opgeslagen daarin. Alle browsers en eventuele extenties en PasswordManagers kunnen zelf wel op een veiligere manier de inloggegevens opslaan.
Cookies zijn leuk voor niet-vertrouwelijke data. Met enig verstand van XSS kan iemand zo een cookie van een tegenpartij uitlezen, met gevolgen van dien, zoal identiteitsfraude.
Ik vind het het kwalijk dat die moeten worden opgeslagen daarin. Alle browsers en eventuele extenties en PasswordManagers kunnen zelf wel op een veiligere manier de inloggegevens opslaan.
Cookies zijn leuk voor niet-vertrouwelijke data. Met enig verstand van XSS kan iemand zo een cookie van een tegenpartij uitlezen, met gevolgen van dien, zoal identiteitsfraude.
Oké, even snel die functie weghalen ;D
username en een wachtwoord is natuurlijk niet nodig.
username + random string.
En dan in de database ook die combinatie opslaan, met daarbij wat gegevens als een tijdstip, user agent string, en evt. een ipadres.
Biedt een browser zo'n cookie aan, dan check je in de database of de rest van de info klopt (ip is discutable, gezien de mogelijkheid dat een ipadres verandert als je je van werk naar huis verplaatst, of je smartphone op een ander netwerk zet)
Klopt die combinatie, dan laat je de gebruiker ingelogd.
Zou eventueel ook zonder username in cookie kunnen, maar dan moet de string niet random zijn, maar uniek. (en ook niet raadbaar) (misschien in combinatie met een timestamp van aanmaken?)
username + random string.
En dan in de database ook die combinatie opslaan, met daarbij wat gegevens als een tijdstip, user agent string, en evt. een ipadres.
Biedt een browser zo'n cookie aan, dan check je in de database of de rest van de info klopt (ip is discutable, gezien de mogelijkheid dat een ipadres verandert als je je van werk naar huis verplaatst, of je smartphone op een ander netwerk zet)
Klopt die combinatie, dan laat je de gebruiker ingelogd.
Zou eventueel ook zonder username in cookie kunnen, maar dan moet de string niet random zijn, maar uniek. (en ook niet raadbaar) (misschien in combinatie met een timestamp van aanmaken?)
Zal der zo even naar kijken.
maar zorg dan ook op z'n minst voor https verbinding (of het moet een totaal onbelangrijke site zijn, maar waarom dan inloggen)
Ik heb gelukkig een https op mijn site ;)
En stel in dat de cookies ook alleen over https verstuurd mogen worden.
Ivo P op 03/01/2017 14:35:59:
En stel in dat de cookies ook alleen over https verstuurd mogen worden.
Die vind ik wel interessant. Cookies worden toch meegestuurd bij de request? Dus als ik een http:// request doe (ook al wordt ik doorgestuurd naar https://) dan zit mijn cookie toch al in de header van het request?
Gewijzigd op 03/01/2017 14:52:52 door Frank Nietbelangrijk
check op http://php.net/setcookie de 6e en 7e parameters
De browser zou hem dus niet moeten sturen. Neem aan dat de meeste moderne browsers dit ook niet zullen doen.
Quote:
secure
Indicates that the cookie should only be transmitted over a secure HTTPS connection from the client. When set to TRUE, the cookie will only be set if a secure connection exists. On the server-side, it's on the programmer to send this kind of cookie only on secure connection (e.g. with respect to $_SERVER["HTTPS"]).
httponly
When TRUE the cookie will be made accessible only through the HTTP protocol. This means that the cookie won't be accessible by scripting languages, such as JavaScript. It has been suggested that this setting can effectively help to reduce identity theft through XSS attacks (although it is not supported by all browsers), but that claim is often disputed. Added in PHP 5.2.0. TRUE or FALSE
Indicates that the cookie should only be transmitted over a secure HTTPS connection from the client. When set to TRUE, the cookie will only be set if a secure connection exists. On the server-side, it's on the programmer to send this kind of cookie only on secure connection (e.g. with respect to $_SERVER["HTTPS"]).
httponly
When TRUE the cookie will be made accessible only through the HTTP protocol. This means that the cookie won't be accessible by scripting languages, such as JavaScript. It has been suggested that this setting can effectively help to reduce identity theft through XSS attacks (although it is not supported by all browsers), but that claim is often disputed. Added in PHP 5.2.0. TRUE or FALSE
De browser zou hem dus niet moeten sturen. Neem aan dat de meeste moderne browsers dit ook niet zullen doen.
Gewijzigd op 03/01/2017 14:56:40 door Ivo P
Dank je Ivo. Vandaag weer iets geleerd :-)
Een unieke hash alleen in een cookie lijkt mij genoeg? Ik bedoel, alle informatie staat toch bij elkaar dus als iemand bij dat cookie kan heeft 'ie toch alle informatie in één keer. Meer informatie in een cookie proppen is dus niet veiliger.
Voor de beeldvorming: deze functionaliteit is dus bedoeld voor het voortzetten van een verlopen sessie. Met behulp van het cookie wordt de sessie hersteld. Het is hierbij héél belangrijk dat dit een van de eerste stappen is wanneer iemand een webpagina van je site oproept. En nog voordat je je pagina begint weer te geven uiteraard, want de inhoud kan direct afhankelijk zijn van welke gebruiker jij bent, of kan zelfs bepalen of je uberhaupt toegang hebt tot de pagina in kwestie. Het gebruik van een "remember me" functionaliteit kan dus verstrekkende gevolgen hebben voor de manier waarop je je pagina's opbouwt!
Dit proces moet ook naadloos en onder water plaatsvinden. Daarnaast gaat dit je in bepaalde situaties (zonder hulpstukken) ook niet helpen. Denk bijvoorbeeld aan een uitgebreid formulier die je aan het invullen bent waarbij informatie in je sessie staat opgeslagen. Wat in wezen bij een doorstart gebeurt is dat je sessie opnieuw wordt opgestart, alle voorgaande informatie ben je dan dus kwijt. Tenzij je je sessie-functionaliteit ook uitbouwt.
Voor de beeldvorming: deze functionaliteit is dus bedoeld voor het voortzetten van een verlopen sessie. Met behulp van het cookie wordt de sessie hersteld. Het is hierbij héél belangrijk dat dit een van de eerste stappen is wanneer iemand een webpagina van je site oproept. En nog voordat je je pagina begint weer te geven uiteraard, want de inhoud kan direct afhankelijk zijn van welke gebruiker jij bent, of kan zelfs bepalen of je uberhaupt toegang hebt tot de pagina in kwestie. Het gebruik van een "remember me" functionaliteit kan dus verstrekkende gevolgen hebben voor de manier waarop je je pagina's opbouwt!
Dit proces moet ook naadloos en onder water plaatsvinden. Daarnaast gaat dit je in bepaalde situaties (zonder hulpstukken) ook niet helpen. Denk bijvoorbeeld aan een uitgebreid formulier die je aan het invullen bent waarbij informatie in je sessie staat opgeslagen. Wat in wezen bij een doorstart gebeurt is dat je sessie opnieuw wordt opgestart, alle voorgaande informatie ben je dan dus kwijt. Tenzij je je sessie-functionaliteit ook uitbouwt.




