Ik maak gebruik van CET maar de tijd word maar in een 12 uurs notatie geplaatst.
In plaats van 23:00 krijg je 11:00.
Ik heb dit om de tijd op te halen:
date('d/m/Y h:i:s', time());
Hoe zorg ik dat deze alsnog in 24 uren weergeeft? Wat doe ik verkeerd?
Ik sla deze tijd op in een sessie.
Ik wil doormiddel van het controleren van deze sessie de gebruiker laten uitloggen bij inactiveit voor een bepaalde tijd.
Bijv, als de session al 30 minuten niet meer is geupdate.
Maar ik heb geen idee hoe ik dit doe. Iemand die mij opweg kan helpen?
En is het ook mogelijk om de sessie te verwijderen wanneer de gebruiker de browser sluit? En zoja? Hoe ?
Ik heb een idee dat deze beveiliging niet 100% veilig is. Bij het maken van een sessie wordt er standaard een cookie aangemaakt (mits je PHPSESSID in de URL gebruikt). Nu lijkt mij dat je aan de hand van XSS de cookie kan aanpassen zodat het geen session-cookie meer is, en dus langer actief zal blijven.
Het belangrijkste is dat tijdens het inloggen vaak genoeg [php]session_regenerate_id[/php] gebruikt, zodat de sessionID steeds verandert, en de oude ongeldig worden verklaard.
Ik denk dat je ook moet controleren of iemand actief is in een bepaalde tijd, waarna de sessie verwijderd wordt. Een kwestie van een soort heartbeat door middel van AJAX.
Ik weet eigenlijk wel hoe sessies werken maar om mijn ervaring uit te breiden kom ik hier. Als ik helemaal zou begrijpen hoe sessies werkten zou ik dit topic ook niet gemaakt hebben, of wel?
Het feit dat je hier een vraag stelt geeft aan dat je niet precies weet wat je zou moeten doen anders zou je, zoals je zelf zegt, die vraag niet stellen.
Jasper Schellekens op 09/03/2018 15:08:04
Om terug te komen op je vraag, beetje irrelevant om de reden hier te posten maar goed;
Nee, dat is wél relevant, dat bepaalt namelijk de oplossingsrichting. Je schetst geen enkele context, hoe moeten wij dan weten wat je probeert te bereiken en of datgene wat je voorstelt sowieso wel de juiste oplossing is voor je onbekende probleem? Sterker nog, je bent er al van overtuigd (op grond waarvan?) dat de oplossing het opschonen van de sessie is, nog zonder dat je uberhaupt uitlegt wat het probleem is.
Jasper Schellekens op 09/03/2018 15:08:04
de reden dat ik wil dat sessies verwijdert worden wanneer de browser gesluit wordt is veiligheidsredenen. Wat als jij een administrator bij onze game zou zijn en (het zal niet veel voorkomen maar het kan altijd)je vergeet uit te loggen waardoor iemand opeens toegang krigjt tot het admin paneel met alle gevolgen van dien. Misschien heeft de persoon die nu toegang gekregen heeft wel toegang verkregen via de browser history. Als de sessies worden verwijderd op het moment dat de browser sluit dan is dit niet mogelijk.
Wat betreft sessies na een bepaalde tijd verwijderen doe ik omdat ik wil dat sessies na 10 minuten inactiveit al verwijderd worden. Ik meen ergens gelezen te hebben dat sessies standaard maar een klein half uurtje bestaan.
Ik hoop voor jou dat je een beetje bekwame admins hebt dan want tegen stupiditeit is geen kruid gewassen. Geen enkele mate van beveiliging zal je redden wanneer de gebruikers hun apparaat onbeheerd achterlaten.
Ook kun je je natuurlijk op meerdere manieren wapenen tegen dit soort ongein (in het ergste geval: maak je regelmatig backups?).
Ik hoop ook van harte dat je geen gebruikersrechten of -rollen opslaat in de sessie zelf, dit is namelijk geen goed ontwerpprincipe. Ook maakt dat het intrekken van privileges ingewikkelder wanneer iemand anders een account "leent".
En wat @Ariën zei klopt, als je de sessie cookie leeftijd instelt op 0 wil dit zeggen "geldig totdat de browser gesloten wordt". Zie de documentatie. Dit is toch vrij elementaire kennis van sessies zou ik zeggen...
Ik zou wel testen of dit ook het gewenste resultaat oplevert. Ook zou je aan een feature kunnen denken waarbij je bij het inloggen aanvinkt of je op een publieke plek inlogt en op grond daarvan de lifetime bepaald wordt. En je zou aan mechanismen kunnen denken waarbij het inloggen (onder water automatisch) "doorgestart" kan worden waarbij effectief je login onthouden wordt.
Ook kun je je natuurlijk op meerdere manieren wapenen tegen dit soort ongein (in het ergste geval: maak je regelmatig backups?).
Bedankt voor de tips. Er worden inderdaad regelmatig backups gemaakt maar liever voorkomen dan genezen. Ik heb alles zo gemaakt dat het ook een log opslaat dus in principe valt elke actie na te gaan inc de tijd en ip adres van gebruiker op dat moment word dan ook opgeslagen, zo zou je erachter kunnen komen wie onbevoegd toegang tot het account heeft gehad(als iemand gehackt is ofzo). Zo hadden we gister iemand die probeerde in te loggen op iemand anders account en de admins hebben hier meteen een halt toe geroepen toen dit bekend werd. Het was namelijk het ip address van een andere gebruiker.
Thomas van den Heuvel op 09/03/2018 16:13:16
Ik hoop voor jou dat je een beetje bekwame admins hebt dan want tegen stupiditeit is geen kruid gewassen. Geen enkele mate van beveiliging zal je redden wanneer de gebruikers hun apparaat onbeheerd achterlaten.
Helaas is dat niet altijd het geval. En komen we er pas achter wanneer het kwaad al geschied is. Nu is nog nooit iets extreems gebeurd ofzo.. Maar ik kan me vanalles bedenken :s