[php] Session ID altijd 'anders'?

Pagina: 1
Acties:

  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024
Zie topic titel

Is het ID wat aangemaakt wordt wanneer een sessie gestart wordt altijd anders? Of is het zo dat na verloop van tijd bepaalde ID's 'hergebruikt' worden?

  • Grum
  • Registratie: Juni 2001
  • Niet online
Je kan er gewoon vanuit gaan dat ze altijd anders zijn.

  • WOmBaT
  • Registratie: September 2000
  • Laatst online: 30-11-2025

WOmBaT

Nyaaa!!!

Het is er in ieder geval een die nog niet bestaat, maar aangezien zo'n kreng lang genoeg is zal het wel een hele tijd duren voordat er eenzelfde langskomt.

  • Birk
  • Registratie: Maart 2002
  • Laatst online: 15-02-2019
Volgens mij is het gewoon een random getal, maar idd wat al genoemd is zijn deze redelijk lang en is de kans klein dat in een korte periode deze weer aan bod komt maar ik denk dat dit niet is uit te sluiten...

Dyslexie | Linux | MoZilla | OpenOffice


  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024
Ok... bedankt voor de replies

Ik ga er dan maar vanuit dat er geen dubbele langskomen ;)

  • Grum
  • Registratie: Juni 2001
  • Niet online
Tuurlijk als jij het 36^32 (6,3340286662973277706162286946812e+49) keer probeert ... dan heb je waarschijnlijk wel 1 dubbele :P

Maar de kans is der nog steeds dat dat niet zo is.

Stel! dat je dus elke seconde er 1.000.000.000 probeert .. dan ben je nog 2.000.000.000.000.000.000.000.000.000.000.000 jaar verder voor je door alle opties heen bent :)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Sessie id is niet gegarandeerd altijd anders.

Op GoT zijn daar meermalen problemen mee geweest dat mensen ineens als iemand anders ingelogd waren, nou kan dat natuurlijk altijd aan de source van topix gelegen hebben ipv de sessie-id generator, maar dat lijkt me sterk.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Op vrijdag 29 maart 2002 17:01 schreef ACM het volgende:
Sessie id is niet gegarandeerd altijd anders.

Op GoT zijn daar meermalen problemen mee geweest dat mensen ineens als iemand anders ingelogd waren, nou kan dat natuurlijk altijd aan de source van topix gelegen hebben ipv de sessie-id generator, maar dat lijkt me sterk.
hmm .. lijkt een bug in topix jou sterk? Ben je wel eens in LA geweest? :+

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Grum
  • Registratie: Juni 2001
  • Niet online
ACM: ik geloof der geen fuck van dat php niet eens even controleerd of der niet al dezelfde sessie loopt .. maar als iemand ff in de source wil kijken .. graag :)

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:39
Op vrijdag 29 maart 2002 18:14 schreef Grum het volgende:
ACM: ik geloof der geen fuck van dat php niet eens even controleerd of der niet al dezelfde sessie loopt .. maar als iemand ff in de source wil kijken .. graag :)
info@android.nl

  • Birk
  • Registratie: Maart 2002
  • Laatst online: 15-02-2019
Op vrijdag 29 maart 2002 18:14 schreef Grum het volgende:
ACM: ik geloof der geen fuck van dat php niet eens even controleerd of der niet al dezelfde sessie loopt .. maar als iemand ff in de source wil kijken .. graag :)
Ehm hij zal ze niet teglijkertijd uitgeven maar misschien wel op een later tijdstip...

Dyslexie | Linux | MoZilla | OpenOffice


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:39
Op vrijdag 29 maart 2002 18:17 schreef Birk het volgende:
Ehm hij zal ze niet teglijkertijd uitgeven maar misschien wel op een later tijdstip...
Dus? Lijkt mij verder geen probleem.

  • Birk
  • Registratie: Maart 2002
  • Laatst online: 15-02-2019
Op vrijdag 29 maart 2002 18:20 schreef ddc het volgende:

[..]

Dus? Lijkt mij verder geen probleem.
Volgens mij wordt het pas een probleem als je in de cookie's alleen de Session ID gooit en die weer een keer terug zet (het cookie) nu zou het kunnen dat iemand anders die ID weer heeft etc etc... :)

Oftewel Session ID en username in Cookie opslaan en die controleren lijkt mij ;)

Dyslexie | Linux | MoZilla | OpenOffice


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op vrijdag 29 maart 2002 18:14 schreef Grum het volgende:
ACM: ik geloof der geen fuck van dat php niet eens even controleerd of der niet al dezelfde sessie loopt
php genereert een random id, maar het zou me niet verbazen als dat id niet gechecked wordt.

Wat natuurlijk mogelijk is is dat topix een eigen id-gen heeft die wel goed random was maar niet de waarden in de DB checkte alvorens een sessie uit te schrijven...

Verwijderd

misschien een hele domme opmerking, maar in de manual staat:
A visitor accessing your web site is assigned an unique id, the so-called session id.
en als je als session-id bv de datum+tijd+threadid+random 10 cijferig nummer pakt, dan heb je toch een uniek nummer, aangezien een thread niet 2 keer tegelijkertijd kan lopen.

  • Birk
  • Registratie: Maart 2002
  • Laatst online: 15-02-2019
Op vrijdag 29 maart 2002 18:56 schreef deur het volgende:
misschien een hele domme opmerking, maar in de manual staat:
[..]

en als je als session-id bv de datum+tijd+threadid+random 10 cijferig nummer pakt, dan heb je toch een uniek nummer, aangezien een thread niet 2 keer tegelijkertijd kan lopen.
Klopt maar een keer moeten de "oude" nummers weer terug komen, tenzij ze het nummer dan langer maken...

Dyslexie | Linux | MoZilla | OpenOffice


  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 01:59
Apache heeft ook een Unique ID mbv mod_unique. Als je die twee waarden nou eens met elkaar vermenigvuldigt, heb je sowieso een uniek getal :)

Verwijderd

waarom, door de tijd erin te verwerken kan een id toch nooit meer terugkeren?

  • Birk
  • Registratie: Maart 2002
  • Laatst online: 15-02-2019
2 * 2 = 4
1 * 4 = 4

Hmm kunnen gelijken uit komen... Of zie ik het verkeerd?

Edit : Kan ook zo voorkomen met + en datum's

Stel dag = 24 + random 5
Setl dag = 23 + random 6

Dyslexie | Linux | MoZilla | OpenOffice


Verwijderd

Op vrijdag 29 maart 2002 18:58 schreef _JGC_ het volgende:
Apache heeft ook een Unique ID mbv mod_unique. Als je die twee waarden nou eens met elkaar vermenigvuldigt, heb je sowieso een uniek getal :)
nee verminigvuldigen werkt niet,
b.v. apache geeft het id 8 en php het id 2... dat wordt dus het "unieke" id 16
maar 4 x 4 is ook 16.

Je kan dan beter de id's achter elkaar zetten, je krijgt dan 82 of 44
:)

  • Birk
  • Registratie: Maart 2002
  • Laatst online: 15-02-2019
Op vrijdag 29 maart 2002 19:02 schreef sjaan het volgende:

nee verminigvuldigen werkt niet,
b.v. apache geeft het id 8 en php het id 2... dat wordt dus het "unieke" id 16
maar 4 x 4 is ook 16.

Je kan dan beter de id's achter elkaar zetten, je krijgt dan 82 of 44
:)
Precies achter elkaar plakken, maar is 1 uniek nummer niet genoeg? Komt het echt voor dat ze twee keer worden uitgegeven :?

Dyslexie | Linux | MoZilla | OpenOffice


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op vrijdag 29 maart 2002 16:47 schreef Grum het volgende:
Tuurlijk als jij het 36^32 (6,3340286662973277706162286946812e+49) keer probeert ... dan
Volgens mij zijn session id's van php 16^32 en niet 36^12 ;)

En het zou me niet verbazen als ze worden gegenereerd volgens het volgende principe:
md5(uniqid(microtime());

Met als gevolg dat de string alleen maar minder uniek is (uniqid maakt nou weer niet zo een heeel lange id) als je die dingen dan een jaar geldig maakt heb je met een DB als die van GoT al gauw 1a2M (atm 1.8M) lopende sessies. De kans dat daar een dubbele bij ontstaat is niet meer zo gek klein.

Magoed, het kan ook altijd nog een bug in de topix source of de php versie van toen geweest zijn natuurlijk :)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Voor de liefhebber de creatie van de sessie id :)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
static char *_php_create_id(int *newlen TSRMLS_DC)
{
    PHP_MD5_CTX context;
    unsigned char digest[16];
    char buf[256];
    struct timeval tv;
    int i;
    int j = 0;
    unsigned char c;

    gettimeofday(&tv, NULL);
    PHP_MD5Init(&context);

    sprintf(buf, "%ld%ld%0.8f", tv.tv_sec, tv.tv_usec, php_combined_lcg(TSRMLS_C) * 10);
    PHP_MD5Update(&context, buf, strlen(buf));

    if (PS(entropy_length) > 0) {
      int fd;

      fd = VCWD_OPEN(PS(entropy_file), O_RDONLY);
      if (fd >= 0) {
        char buf[2048];
        int n;
        int to_read = PS(entropy_length);

        while (to_read > 0) {
            n = read(fd, buf, MIN(to_read, sizeof(buf)));
            if (n <= 0) break;
            PHP_MD5Update(&context, buf, n);
            to_read -= n;                        }
        close(fd);
      }
    }

    PHP_MD5Final(digest, &context);

    for (i = 0; i < 16; i++) {
      c = digest[i];
      buf[j++] = hexconvtab[c >> 4];
      buf[j++] = hexconvtab[c & 15];
    }
    buf[j] = '\0';

    if (newlen)
      *newlen = j;
    return estrdup(buf);
}

En de relevante aanroep in session_start:
code:
1
2
    if (!PS(id))
      PS(id) = _php_create_id(NULL TSRMLS_CC);

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09-09 22:48

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op vrijdag 29 maart 2002 18:59 schreef Birk het volgende:
2 * 2 = 4
1 * 4 = 4

Hmm kunnen gelijken uit komen... Of zie ik het verkeerd?

Edit : Kan ook zo voorkomen met + en datum's

Stel dag = 24 + random 5
Setl dag = 23 + random 6
wat er wordt bedoeld is de tijd en daarachter een random getal. Zeg maar zoiets:

time () . randomvan20digits ();

dus niet keer of plus, maar aan elkaar geplakt :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Birk
  • Registratie: Maart 2002
  • Laatst online: 15-02-2019
Op vrijdag 29 maart 2002 22:31 schreef OiSyN het volgende:

wat er wordt bedoeld is de tijd en daarachter een random getal. Zeg maar zoiets:

time () . randomvan20digits ();

dus niet keer of plus, maar aan elkaar geplakt :)
Ja inderdaad, maar de optie om het eerste getal * het tweede getal te doen leek mij niet echt mogelijk, vandaar mijn eerdere post :)
Op vrijdag 29 maart 2002 18:58 schreef _JGC_ het volgende:
Apache heeft ook een Unique ID mbv mod_unique. Als je die twee waarden nou eens met elkaar vermenigvuldigt, heb je sowieso een uniek getal :)

Dyslexie | Linux | MoZilla | OpenOffice


  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024
Leuke discussie ;)

Heb ondertussen maar aangenomen dat het SessieID niet dubbel voorkomt.

En of hem echt uniek te maken, hoe is deze?

microtime(); geeft je een waarde (.12465466 595749489), iets in die richting in iedergeval. Als je de punt weghaalt, die 2 cijfers achter elkaar plakt heb je al een nr wat zo goed als uniek is. En om zelfs die hele kleine 'kans dat' eruit te halen zou je er nog een SessieID achter kunnen plakken.

Heb je alleen een string die niet echt handelbaar is :+

edit: Ik bedoelde natuurlijk microtime |:(

  • Grum
  • Registratie: Juni 2001
  • Niet online
WAAROM doen mensen zo lastig ...

Ga er toch gewoon van uit dat et session id uniek is.

Kijk .. als jij echt ZO bang bent dat je dubbele session id's krijgt ... kijk dan gewoon of ie bestaat nadat je session_start hebt aangeroepen voor de eerste keer

mensen .. doe niet zo moeilijk :+

  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024
Nou... het ging me in eerste instantie niet om de sessie, maar om de file die aan de hand van het sessieID werd aangemaakt.
Maar ik heb idd gewoon ff een check gemaakt om te kijken of die file al bestond.

  • eborn
  • Registratie: April 2000
  • Laatst online: 08-09 12:50
Er blijft altijd een kans dat er iets dubbel gegenereerd wordt. Zelfs met de manier waarop PuTTY een key genereerd: de gebruiker met de muis laten bewegen en de X-Y posities aan een engine voeren :)

  • Birk
  • Registratie: Maart 2002
  • Laatst online: 15-02-2019
Op woensdag 03 april 2002 11:26 schreef eborn het volgende:
Er blijft altijd een kans dat er iets dubbel gegenereerd wordt. Zelfs met de manier waarop PuTTY een key genereerd: de gebruiker met de muis laten bewegen en de X-Y posities aan een engine voeren :)
Wordt daar dan niet op gecontroleerd?

edit:

En als ik mijn muis dan niet beweeg?

Dyslexie | Linux | MoZilla | OpenOffice


  • vinnux
  • Registratie: Maart 2001
  • Niet online
Wat doen we toch weer moeilijk,

Technisch gezien kun je er vanuit gaan dat geen enkele reeks tekens uniek is wanneer je tijd oneindig maakt en plaats hetzelfde. Op een gegeven moment kom je toch weer dezelfde reeks tegen.
Als je de huidige rekenkracht in acht neem is het onwaarschijnlijk dat je binnen enkele dagen en zelfde reeks zult produceren, als zet je er alle computers van de wereld neer.
Hiermee kun je dus stellen dat een getal "Uniek" is


De vraag die de topicstarter vraagt is :
Is een reeks tekens Uniek gedurende de tijdspanne van een sessie voor de gegeven server ?
Het antwoord hierop is ja met de volgende opmerkingen :
Hoe meer id's er gedurende het bestaan van een sessie worden uitgedeeld, hoe groter de kans is dat er een zelfde voor komt. Mits er niet gecontroleerd word of die al uitgegeven is. PHP controleert die volgens mij wel, dus het moet geen enkele probleem zijn.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op woensdag 03 april 2002 12:39 schreef vgouw het volgende:
PHP controleert die volgens mij wel, dus het moet geen enkele probleem zijn.
Nee, zoals je aan mijn stukje copy&paste van die c-source kan zien, php controleert dat niet...

Tenzij ik ergens overheen kijk natuurlijk.

  • Birk
  • Registratie: Maart 2002
  • Laatst online: 15-02-2019
Op woensdag 03 april 2002 12:53 schreef ACM het volgende:

Nee, zoals je aan mijn stukje copy&paste van die c-source kan zien, php controleert dat niet...

Tenzij ik ergens overheen kijk natuurlijk.
Volgens mij wordt het idd ook niet gecontroleerd...

Dyslexie | Linux | MoZilla | OpenOffice


  • eborn
  • Registratie: April 2000
  • Laatst online: 08-09 12:50
Op woensdag 03 april 2002 11:27 schreef Birk het volgende:

[..]

Wordt daar dan niet op gecontroleerd?

edit:

En als ik mijn muis dan niet beweeg?
offtopic:
Nee, want die keygen maakt gewoon een 'SSH-key' van 1024 bits (ofzoiets). Er loopt een balkje mee die aangeeft of je al genoeg bewogen hebt, dus niet bewegen heeft geen zin. Maar theoretisch is er altijd een kans dat iemand dezelfde bewegingen maakt. Ook al is die kans oneindig klein.

  • Birk
  • Registratie: Maart 2002
  • Laatst online: 15-02-2019
Op woensdag 03 april 2002 13:22 schreef eborn het volgende:

offtopic:
Nee, want die keygen maakt gewoon een 'SSH-key' van 1024 bits (ofzoiets)...
Aha ok ;) thx

Dyslexie | Linux | MoZilla | OpenOffice

Pagina: 1