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

  • 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?

  • #2
    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

    Kommentar


    • #3
      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

      Kommentar


      • #4
        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?!

        Kommentar


        • #5
          Dann schalte mal die Cookie-Annahme aus. Denn auch Sessions arbeiten mit Cookies.

          Gruß
          phpfan

          Kommentar


          • #6
            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...

            Kommentar


            • #7
              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.

              Kommentar


              • #8
                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

                Kommentar

                Lädt...
                X