Ankündigung

Einklappen
Keine Ankündigung bisher.

Session.... schwer schwer schwer....

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gast-Avatar
    Ein Gast erstellte das Thema Session.... schwer schwer schwer.....

    Session.... schwer schwer schwer....

    Also, nachdem ich bereits vieles kann (^^), möchte ich nach einige
    Monaten verspätungen auch die Sessionfunktion erlernen, weil ich bisher
    alle Loginsystem mit Cookies gemacht habe. Die Logindatei habe ich bereits:
    PHP-Code:
    <?PHP
    session_id
    ();
    session_start();
    $nick "peety";
    $pw "pw123";
    if(isset(
    $_POST['send']))
    {
      if(
    $nick == $_POST['nick'] AND $pw == $_POST['pw'])
      {
        
    $_SESSION['nick'] == $_POST['nick'];
        
    $_SESSION['pw'] == $_POST['pw'];
        
    header("Location: member.php?PHPSESSID=".session_id());
      }
    }
    ?>
    <form method="POST">
    <input name="nick" type="text"><input name="pw" type="text"><input name="send" type="submit">
    </form>
    Die der Sessioncode/hash/id, wie das auch heisst, bekomme ich zwar bei member.php, aber kann keine Sachen auslesen:
    PHP-Code:
    <?PHP
    session_start
    ();
    print_r($_SESSION);
    ?>
    Die Frage: Wieso?

  • Basti
    antwortet
    Hallo.

    Das session_id(); vor dem session_start(); ist ohne Wirkung, kannst du also weglassen.

    Wichtiger ist ein Schutz gegen Session-Fixations.

    http://www.acros.si/papers/session_fixation.pdf
    http://phpsec.org/projects/guide/4.html#4.1

    Kurz:
    Nach session_start() immer prüfen, ob die Session neu gestartet oder nur wieder aufgegriffen
    wurde. Wenn sie neu gestartet wurde, dann eine neue Session-ID generieren lassen. Und, fals
    bereits vor dem Login eine Session besteht, dann auch nach dem Login eine neue Session-ID
    generieren lassen.

    Letzteres ist für dich wohl erstmal uninteressant, daher reich wohl folgender Code aus dem
    Security Guide des PHPSC:
    PHP-Code:
    <?php
    session_start
    ();

    if (!isset(
    $_SESSION['initiated'])) {
        
    session_regenerate_id();
        
    $_SESSION['initiated'] = true;
    }
    ?>
    Noch ein paar Punkte:
    • Auch $_POST['nick'] und pw können uninitialisiert sein, also auch mit isset() prüfen.
    • In den Location-Header gehört laut Sepc. ein absoluter URL.
    • Von Passwörtern nach Möglichkeit immer nur Prüfsummen speichern. Klar, das ist nur ein
      Versuchsskript, ich schreib es dennoch mal hier rein...


    Basti

    Einen Kommentar schreiben:


  • xabbuh
    antwortet
    Re: Session.... schwer schwer schwer....

    Zitat von moi
    b) ein " action="" " ist nicht nötig, wenn es auf die gleiche Seite führt
    Das wird zwar von den gängigen Browser so gehandhabt, ist aber trotzdem nicht (X)HTML-konform.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Re: Session.... schwer schwer schwer....

    Zitat von moi
    b) ein " action="" " ist nicht nötig, wenn es auf die gleiche Seite führt
    Mein Fehler...

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Dann schalte mal die Cookie-Annahme aus. Denn auch Sessions arbeiten mit Cookies.

    Gruß
    phpfan

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Re: Session.... schwer schwer schwer....

    Zitat von karl-150
    Zitat von moi
    Die Frage: Wieso?
    Wahrscheinlich aufgrund mangelnder Grundkenntnisse...

    http://de3.php.net/manual/en/languag...assignment.php
    http://www.selfhtml.net/html/formulare/definieren.htm
    a) Wegen dem "==": Sorry Jeder macht mal Fehler
    b) ein " action="" " ist nicht nötig, wenn es auf die gleiche Seite führt

    Achja, a) war der Auslöser.

    Die nächste Frage: Auf einigen Seiten steht, das man die SessionID weitergeben kann/muss: Was nützt mir das? Ohne einer SessionID im URL können die Daten immernoch ausgelesen?!

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Re: Session.... schwer schwer schwer....

    Zitat von moi
    Die Frage: Wieso?
    Wahrscheinlich aufgrund mangelnder Grundkenntnisse...

    http://de3.php.net/manual/en/languag...assignment.php
    http://www.selfhtml.net/html/formulare/definieren.htm

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Das ganze in eine Datenbank schreiben? Die Session dem eingeloggten User zuordnen in die Datenbank schreiben und dann die Daten auf der memberseite per Session wieder auslesen.

    Mike

    Einen Kommentar schreiben:

Lädt...
X