Toon posts:

[sessions] ingelogd blijven

Pagina: 1
Acties:
  • 196 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Er is misschien risico op een slotje maar toch proberen...

Ik zit de hele dag al op verschillende sites te lezen over registratie systemen waarbij de user ingelogd blijft (als op got en fok etc) Veel verschillende methoden (ik heb zelf ook nog wel wat ideetjes) maar is er nu één beproefde methode? In de trant van: "zo kan je het het beste maken". Wat ik vooral niet helemaal snap zijn de expire tijden van de session cookies. Op mijn phpbb forum cookie staat expires this session Got staat er een jaar later. Wat is nu precies het verschil in methode dat beide hanteren?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

De enige methodiek is om met cookies te werken. Een andere optie is er afaik niet. Voor de rest snap de ik de rest van de vraag niet.. :P

[ Voor 49% gewijzigd door gorgi_19 op 19-05-2003 23:36 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Je kunt inloggegevens op een client neerzetten mbv een cookie, en die cookie kan je een expiration-datum meegeven, zodat de gegevens maar voor een door de software te bepalen tijd geldig zijn.

Zorg wel dat vertrouwelijke gegevens niet eenvoudig vanuit het cookie te lezen zijn door ze bijvoorbeeld te versleutelen.

Succes :)

  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
Met uitzondering van de laatste helft van je post (misschien ff herformuleren?) snap ik je probleem.
Het gebruikte systeem is hier meestal om met cookies te werken; deze worden client-side opgeslagen en verspillen derhalve geen ruimte op de server. Ook kun je zeer mooi een datum aangeven waarop het cookie verwijderd moet worden.
Sessions worden doorgaans gebruikt bij systemen waarbij het nodig is dat de gebruiker niets kan aanpassen aan de sessiondata. Daarom worden deze server-side opgeslagen. Bij een inlogsysteem heb je dit voordeel van sessions niet nodig (het is immers in het voordeel van de gebruiker zelf dat hij het cookie bewaart).

edit: spuit 11

  • Johnny
  • Registratie: December 2001
  • Laatst online: 22-08 21:11

Johnny

ondergewaardeerde internetguru

gorgi_19 schreef op 19 May 2003 @ 23:35:
De enige methodiek is om met cookies te werken. Een andere optie is er afaik niet. Voor de rest snap de ik de rest van de vraag niet.. :P
Het IP loggen, maar dan moet de gebruiker wel een statisch IP hebben...

edit:
En natuurlijk niet meerdere computers/gebruikers per IP

[ Voor 11% gewijzigd door Johnny op 19-05-2003 23:44 ]

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Johnny schreef op 19 May 2003 @ 23:43:
[...]


Het IP loggen, maar dan moet de gebruiker wel een statisch IP hebben...
Klopt, maar hier mag je niet van uit gaan. Stel dat er een proxyserver oid gebruikt wordt; dan is je hele methodiek nutteloos. :)

Aangezien je hier niet van te voren van uit mag gaan, is deze methodiek imho niet op grote schaal bruikbaar.

[ Voor 16% gewijzigd door gorgi_19 op 19-05-2003 23:45 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
damn...ja ik heb ook problemen om het goed uit te leggen, hmmm Ik bedoel dat werken met cookies is logisch natuurlijk. laat ik het anders vragen. kan iemand mij exact uitleggen hoe het inlog systeem van GOT werkt?

  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
Johnny schreef op 19 May 2003 @ 23:43:

Het IP loggen, maar dan moet de gebruiker wel een statisch IP hebben...
Zou je de TS niet dit soort dingen willen vertellen? Het is namelijk een volstrekt belachelijk idee om dit op deze manier te implementeren en is ook bij lange na niet waterdicht.
Tevens haal je het hele principe van cookies onderuit, daar deze ideaal zijn hiervoor.

edit: alweer spuit 11 (gorgi :()

[ Voor 4% gewijzigd door Limhes op 19-05-2003 23:45 ]


Verwijderd

Topicstarter
gorgi_19 schreef op 19 mei 2003 @ 23:44:
[...]

Klopt, maar hier mag je niet van uit gaan. Stel dat er een proxyserver oid gebruikt wordt; dan is je hele methodiek nutteloos. :)

Aangezien je hier niet van te voren van uit mag gaan, is deze methodiek imho niet op grote schaal bruikbaar.
meest logisch lijkt mij nog steeds.

1. iemand logt in
2. ==true -> genereer random code en schrijf die weg in de db met $id en wat je verder nog leuk vindt. Schrijf een cookie met dezelfde code.
3. user komt dag later terug. Kijk of issett($cookie) zoek in de db op welke code erbij hoort, register id en weer vrolijk doorgaan....lijkt mij! :)

[ Voor 3% gewijzigd door Verwijderd op 19-05-2003 23:51 ]


Verwijderd

Verwijderd schreef op 19 May 2003 @ 23:44:
damn...ja ik heb ook problemen om het goed uit te leggen, hmmm Ik bedoel dat werken met cookies is logisch natuurlijk. laat ik het anders vragen. kan iemand mij exact uitleggen hoe het inlog systeem van GOT werkt?
Hoe precies wil je het weten?

Grofweg gebeurt er het volgende:
- check of er een cookie met inloggegevens aanwezig is
- ja: probeer in te loggen met deze gegevens
- inlog succes: geef de pagina weer op basis van inloggegevens, en stuur een nieuw cookie met de expiration datum nu + x tijd (bijv 1 jaar).
- inlog gefaald: geef pagina weer voor niet ingelogde gebruikers en verniel het cookie

- geen cookie: geef pagina weer voor niet ingelogde gebruikers

- als gebruiker handmatig inlogd en vakje 'blijf ingelogd' aankruist, stuur dan een cookie met inloggegevens met de expiration datum nu + x tijd (bijv 1 jaar).

- als een gebruiker uitlogd, verniel dan het cookie met inloggegevens

Hoe je dit technisch allemaal doet is afhankelijk van je ontwikkelplatform / -taal.

Verwijderd

Topicstarter
en misschien bij elke aanroep van session_start timestamp updaten zodat je aantal ingelogde users online kan tellen? (in de laatste 5 minuten ofzo)

  • Yo-han
  • Registratie: December 2001
  • Laatst online: 08-07 11:19

Yo-han

nope.

Verwijderd schreef op 19 mei 2003 @ 23:50:
[...]


meest logisch lijkt mij nog steeds.

1. iemand logt in
2. ==true -> genereer random code en schrijf die weg in de db met $id en wat je verder nog leuk vindt. Schrijf een cookie met dezelfde code.
3. user komt dag later terug. Kijk of issett($cookie) zoek in de db op welke code erbij hoort, register id en weer vrolijk doorgaan....lijkt mij! :)
Gebeurt op zijn minst dus 10-20 keer per dag en mensen komen nooit meer terug. Binnen de kortste keren zit jij met een ruimte gebrek op je server of een vervuilde database ;)
Verwijderd schreef op 19 May 2003 @ 23:54:
en misschien bij elke aanroep van session_start timestamp updaten zodat je aantal ingelogde users online kan tellen? (in de laatste 5 minuten ofzo)
Precies hetzelfde probleem als eerder gemeld...

[ Voor 20% gewijzigd door Yo-han op 19-05-2003 23:57 . Reden: toevoeging ]


  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 07-07 11:51
dayoman schreef op 19 May 2003 @ 23:54:
[...]


Gebeurt op zijn minst dus 10-20 keer per dag en mensen komen nooit meer terug. Binnen de kortste keren zit jij met een ruimte gebrek op je server of een vervuilde database ;)
Hiervoor bestaat zo iets als garbage collection. Elke keer als iemand binnen een sessie een pageview genereert, wordt de timestamp in de database op now() gezet. En tevens alle oudere sessies dan x dagen/minuten verwijderd.

PHP sessions werken precies zo.

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


Verwijderd

Topicstarter
dayoman schreef op 19 May 2003 @ 23:54:
[...]


Gebeurt op zijn minst dus 10-20 keer per dag en mensen komen nooit meer terug. Binnen de kortste keren zit jij met een ruimte gebrek op je server of een vervuilde database ;)


[...]


Precies hetzelfde probleem als eerder gemeld...
ja niet iedere keer natuurlijk, eerst checken of die al een cookie heeft van een eerdere login. maar als je aantal users online wilt tellen zal je toch echt data moeten wegschrijven in een tabel.

Verwijderd

Topicstarter
bigtree schreef op 19 May 2003 @ 23:58:
[...]
Hiervoor bestaat zo iets als garbage collection. Elke keer als iemand binnen een sessie een pageview genereert, wordt de timestamp in de database op now() gezet. En tevens alle oudere sessies dan x dagen/minuten verwijderd.

PHP sessions werken precies zo.
precies...lijkt me logisch. dat valt prima schoon te houden.

  • Yo-han
  • Registratie: December 2001
  • Laatst online: 08-07 11:19

Yo-han

nope.

bigtree schreef op 19 May 2003 @ 23:58:
[...]
Hiervoor bestaat zo iets als garbage collection. Elke keer als iemand binnen een sessie een pageview genereert, wordt de timestamp in de database op now() gezet. En tevens alle oudere sessies dan x dagen/minuten verwijderd.

PHP sessions werken precies zo.
Maar dan blijft dus alle overbodige info op jouw server staan! Met cookies is dit niet het geval... En als je de info te vroeg verwijderd, ben je weer niet klant vriendelijk bezig als de bezoeker terugkeerd.

* Yo-han vraagt zich af waarom tweakers dit dan nog niet gebruikte

[ Voor 7% gewijzigd door Yo-han op 20-05-2003 00:03 ]


Verwijderd

Topicstarter
dayoman schreef op 20 mei 2003 @ 00:01:
[...]


Maar dan blijft dus alle overbodige info op jouw server staan! Met cookies is dit niet het geval... En als je de info te vroeg verwijderd, ben je weer niet klant vriendelijk bezig als de bezoeker terugkeerd.

/me vraagt zich af waarom tweakers dit dan nog niet gebruikte
waar wil jij dan op checken? alleen of de cookie bestaat client-side? Das nie safe, moet toch echt een vergelijking komen met de db. en waarom kan info niet een jaar in mijn db staan...

  • Yo-han
  • Registratie: December 2001
  • Laatst online: 08-07 11:19

Yo-han

nope.

Verwijderd schreef op 20 May 2003 @ 00:05:
[...]

waar wil jij dan op checken? alleen of de cookie bestaat client-side? Das nie safe, moet toch echt een vergelijking komen met de db. en waarom kan info niet een jaar in mijn db staan...
eeeh 3000 pageviews keer minimaal 1 bit... per maand of meer :+
ik weet wel waarom ik dat niet wil!

Is alleen handig met users waar je 100% zeker van bent dat ze vaker terug keren, dus alleen bij abonnementen of iets dergelijks zou ik zeggen.

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 07-07 11:51
Als het gaat om het 'ingelogd blijven' zoals bij tweakers het geval is, heb je twee opties.

Ten eerste kan je aan de user-tabel een veld 'laatste_sessie_id' toevoegen. Op die manier blijft de hoeveelheid 'overbodige info' tot een minimum beperkt. In dat geval hoef je dus ook geen data te verwijderen na x dagen, omdat men makkelijk na een maand terug kan komen.

De tweede optie is om unieke sessies op te slaan in een sessie-tabel. Dit is vooral relevant als je wilt meten hoe vaak men inlogt.

Beide systemen zijn uit te breiden met een check op het ip-adres/browser etc. Dus dat een sessie automatisch vervalt als er een pageview vanaf een nieuw ip-adres komt, of met een andere browser. Ik denk niet dat ze bij tweakers een dergelijke check uitvoeren.

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


  • Yo-han
  • Registratie: December 2001
  • Laatst online: 08-07 11:19

Yo-han

nope.

Tja ben bang dat dit toch een duidelijk geval van voorkeur is en erg aplicatie afhankelijk. Dus ga lekker pitten en wens jullie ook een goede nacht toe!

:z

Verwijderd

Topicstarter
dayoman schreef op 20 May 2003 @ 00:08:
[...]


eeeh 3000 pageviews keer minimaal 1 bit... per maand of meer :+
ik weet wel waarom ik dat niet wil!

Is alleen handig met users waar je 100% zeker van bent dat ze vaker terug keren, dus alleen bij abonnementen of iets dergelijks zou ik zeggen.
onzin elke id (waarmee je geregd bent) kan maar 1 maal voorkomen. 1000 geregistreerde gebruikers op je forum...maximaal 1000 entrys in je session table.

Verwijderd

Topicstarter
bigtree schreef op 20 May 2003 @ 00:10:
Als het gaat om het 'ingelogd blijven' zoals bij tweakers het geval is, heb je twee opties.

Ten eerste kan je aan de user-tabel een veld 'laatste_sessie_id' toevoegen. Op die manier blijft de hoeveelheid 'overbodige info' tot een minimum beperkt. In dat geval hoef je dus ook geen data te verwijderen na x dagen, omdat men makkelijk na een maand terug kan komen.

De tweede optie is om unieke sessies op te slaan in een sessie-tabel. Dit is vooral relevant als je wilt meten hoe vaak men inlogt.

Beide systemen zijn uit te breiden met een check op het ip-adres/browser etc. Dus dat een sessie automatisch vervalt als er een pageview vanaf een nieuw ip-adres komt, of met een andere browser. Ik denk niet dat ze bij tweakers een dergelijke check uitvoeren.
en dit verhaal vat ik dus niet... hoe/waarmee check ik dan wie je bent als je na een maand terug komt? ( ip-adres/browser check lijkt me overbodig, kaan je ook een random key genereren)

  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Ik doe het bijna het zelfde, alleen gooi ik een hash (md5 of sh2) van het wachtwoord in het cookie, hash staat ook in de db. Hierop controleren cookie een datum + x mee geven en klaar. Zo hoef je maar op 1 vaste waarde te checken (je hash) en of je cookie nog geldig is.

Dacht dat dit wel veilig is en een goede manier. Iemand hier misschien op- of aanmerkingen over?

Huur mij in als freelance SEO consultant!


Verwijderd

Topicstarter
CrashOne schreef op 20 May 2003 @ 00:23:
Ik doe het bijna het zelfde, alleen gooi ik een hash (md5 of sh2) van het wachtwoord in het cookie, hash staat ook in de db. Hierop controleren cookie een datum + x mee geven en klaar. Zo hoef je maar op 1 vaste waarde te checken (je hash) en of je cookie nog geldig is.

Dacht dat dit wel veilig is en een goede manier. Iemand hier misschien op- of aanmerkingen over?
zoiets dacht ik dus ook, volgens mij is het safe.

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 07-07 11:51
CrashOne schreef op 20 May 2003 @ 00:23:
Ik doe het bijna het zelfde, alleen gooi ik een hash (md5 of sh2) van het wachtwoord in het cookie, hash staat ook in de db. Hierop controleren cookie een datum + x mee geven en klaar. Zo hoef je maar op 1 vaste waarde te checken (je hash) en of je cookie nog geldig is.

Dacht dat dit wel veilig is en een goede manier. Iemand hier misschien op- of aanmerkingen over?
Je hebt neem ik aan ook een cookie met userid of iets dergelijks? Want wat als er twee mensen met hetzelfde wachtwoord in je database staan?

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

ja, idd... vergeten erbij te vermelden.

Denk dat dit wel de manier is.

Huur mij in als freelance SEO consultant!


Verwijderd

Topicstarter
heb je gelijk in...waarom niet een random code generen van 10 karakters, wegschrijven in je cookie en in je table (alsmede de userid, timestamp etc). en die steeds vergelijken

  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

stel ik wil ingelogt zijn op meerdere pc's? Dan heb je een probleem, of je moet (te) veel data voor iedere user bij gaan houden.

Huur mij in als freelance SEO consultant!


  • SyphOn
  • Registratie: Juni 2001
  • Laatst online: 19-08 19:52
En als je nou gewoon de username en password codeert in een coockie en dan deze vergelijken met de user database? En dan in de userdatabse aangeven wanenerd e cookie voor het laatst is uitgelezen

  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Volgens mij is mijn oplossing het makkelijkst en een hash is moeielijk terug te brengen naar het eigenlijke wachtwoord.

Maar ik ga slapen, lees het morgen wel! :z

Huur mij in als freelance SEO consultant!


Verwijderd

Topicstarter
CrashOne schreef op 20 May 2003 @ 00:35:
stel ik wil ingelogt zijn op meerdere pc's? Dan heb je een probleem, of je moet (te) veel data voor iedere user bij gaan houden.
mmm...tja fuck... das ok weer waar! :|

passdw md5 in een cookie wegschrijven, ja tis niet slecht, plus een cookie met de id dus. Bestaan beide cookies vergelijk ze met de user tabel...Moet je iig zwaar je best doen om dat te brute forcen...

Verwijderd

Topicstarter
aan de andere kant...GOT bewaart ook al die meuk

http://gathering.tweakers.net/forum/logout

staan 5 sessies nu van me open... hoe zit dat precies dan.

morgen weer verder idd...

[ Voor 30% gewijzigd door Verwijderd op 20-05-2003 00:54 ]


  • SyphOn
  • Registratie: Juni 2001
  • Laatst online: 19-08 19:52
Misschien kan Chem het ff uitleggen. Ik weet wel hoe het werkt denk ik maar ik kan het niet echt verwoorden |:(

Ik ben dom :P en het is ook al laat.

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 07-07 11:51
Het hashen van een userid + pass en deze in een cookie stoppen heeft geen meerwaarde boven het genereren van een unieke, random session-id. Sterker nog, volgens mij is het beter om een random string van bijvoorbeeld 30 karakters te genereren (en deze bij een user op te slaan in je db EN als cookie weg te schrijven) dan om de UserID + Pass samen te hashen. En wel om drie redenen:

- Een hash is niet uniek, er kunnen in theorie twee verschillende users dezelfde hash hebben.
- Aangezien je geen userid apart in een cookie hebt zitten, moet je van alle users in je database een hash samenstellen om te achterhalen welke userid bij een sessie hoort.
- Een random string van 30 karakters is minder makkelijk te brute-forcen dan een hash van een password.

Kortom; als iemand aanvinkt dat hij onthouden moet worden bij het inloggen, genereer dan een random string van 30 karakters, sla deze op in het record in je user-tabel en schrijf de cookie weg naar de gebruiker. Bij elke pageview van deze gebruiker schrijf je de cookie weer een jaar vooruit.

Als iemand uitlogt, verwijder je de sessie uit het veld in je user-tabel.

En ja, dit geeft problemen als je op meerdere pc's onthouden wilt worden. In dat geval moet je een aparte sessie-tabel maken met sessie-id en userid.

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


  • SyphOn
  • Registratie: Juni 2001
  • Laatst online: 19-08 19:52
ReactID = 2328d25812ee6695015c5d9452991462

^^
ff een voorbeeld.

bigtree,
Dit bedoel je dus met een random gegenereerd nummer? Of is dit de session id?

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 07-07 11:51
SyphOn schreef op 20 May 2003 @ 00:56:
ReactID = 2328d25812ee6695015c5d9452991462

^^
ff een voorbeeld.

bigtree,
Dit bedoel je dus met een random gegenereerd nummer? Of is dit de session id?
Het is allebei.

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.

Pagina: 1