[session_id(set)] ändert nicht dauerhaft!

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

  • [session_id(set)] ändert nicht dauerhaft!

    Hallo

    Ich habe folgende 3 funktionen, die ich mittels echo und var_dump() kontroliere.

    PHP-Code:
    function wb_logout() {
        include(
    "global.inc.php");
        
    mysql_query("DELETE FROM user_online WHERE username 
    = '"
    .$_SESSION['user_name']."' AND ip = '".$REMOTE_ADDR."'");
        unset(
    $_SESSION);
        
    session_destroy();
        if (
    $_COOKIE['loger']) {
            @
    setcookie("loger","",time() - 3600);
            echo 
    preg_replace("/\\$(.*)#/Ue","".recalltemplate
    ('\\1')."",calltemplate("logoutheader"));
            exit;
        }
        
    session_start();
        
    wb_minimumlogin();
    }

    function 
    wb_minimumlogin() {
        if (!isset(
    $_SESSION['user_name'])) {
            global 
    $REMOTE_ADDR;
            
    $_SESSION['user_name'] = "Gast";
            
    $newid session_id().str_replace('.','',$REMOTE_ADDR);
            
    session_id($newid);
            global 
    $wb_seiteninhalt;
            
    $wb_seiteninhalt .= "<br> new ".session_id();
            
            
        }
        if (!isset(
    $_SESSION['user_rang'])) {
            
    $_SESSION['user_rang'] = 0;
        }

    }

    function 
    wb_session_firewall() {
        global 
    $REMOTE_ADDR;
        
    $ipanhang str_replace('.','',$REMOTE_ADDR);
        
    $sess_a session_id();
        
    $laenge strlen($sess_a);
        for(
    $i $laenge strlen($ipanhang); $i <= $laenge$i++) {
            
    $vergleich .= $sess_a["$i"];
        }
        if (
    $vergleich != $ipanhang) {
            global 
    $wb_seiteninhalt;
            
    $wb_seiteninhalt .= "ja $vergleich";
            
    wb_logout();
        }
        
    wb_minimumlogin();

    Script Anfang
    Mein script startet die Session, und ruft die function wb_session_firewall() auf.

    Ablauf
    in wb_session_firewall() ersetze ich die IP in eine Zahlenfolge ohne "." (Punkte). Nun prüfe ich ob das Ende der Sessions ID diese Punktlose IP beinhaltet. Die ist natürlich nicht der Fall.

    Also bekomme ich die Ausgabe ja und
    wb_logout(); wird abgerufen!

    In wb_logout() wird nun die Session terminiert und eine neue angelegt. nun wird wb_minimumlogin(); abgerufen, die dafür sorgt, dass du einen usernamen und userrang hast. Neben bei, wandelt diese Funktion deine Sessions ID um, und Sessions ID gefolgt von der Punktlosen IP.
    Diese Ip wird dort korrekt an den Monitor gebracht, siehe Ziele:
    $wb_seiteninhalt .= "<br> new ".session_id(); // $wb_seiteninhalt wird auf dieser HP zum schluss mittels echo ausgegeben

    O.K.

    Nun wechsel ich die Seite z.B mittels eines Links, und die Sessions id ist wieder die alte, obwohl kein logout war. Wieder springt in wb_session_firewall() wb_logout ein(), und soweiter. Irgend wie will php meine neue ID nicht akzeotieren woran kann das leigen?
    Zuletzt geändert von LGC; 31.08.2005, 22:33.

  • #2
    Re: [session_id(set)] ändert nicht dauerhaft!

    bitte brich deinen code gemäß den regeln um, so dass man nicht horizontal scrollen muss!


    beschreibung von session_id() im manual beachtet?
    Wenn ID angegeben wird, wird die die aktuelle Session-ID ersetzt. session_id() muss zu diesem Zweck vor session_start() aufgerufen werden.
    btw: was willst du damit erreichen ...?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hallo

      Ich habe den Code umbgebrochen.

      Was ich damit ereichen möchte ist ganz einfach. Ich logge Referer Links. Nun steht in der Administration letzter Zugriff http://dieseie.de/bla.php?SID=....

      klick ich drauf, habe ich mich einer Session ermächtigt. Wenn ich nun von meiner Seite (z.b. Forum auf einen Link klicke) und meine SID auf der Fremdseite in Referer Satistiken geloggt wird, finde ich das dann nicht mehr so lustig.

      Ich nutze einen Dienst, der mir sagt, woher meine Besucher kommen, von wo, welche Stadt welches Land, was fürn Browser... die ganze Palette. Nun sehe ich mir die Statistik (durch welchen Link an). Dann haut es mich um.

      Da steht dann zum Beispiel ...?SID = ... Ich gehe auf meine Webseite, logg mich aus, gehe zu den Statistiken, klick den Link an, und binn eingeloggt. (Was mit session_destroy(); farge ich mich?)

      Was ich damit sagen will, wer deine SID kennt, kann deine Session ausnutzen. Ich will daher eine Sessions id, die am Ende die IP Adresse enthält. Wenn jetzt einer meine SID kennt, braucht er noch die gleiche IP, sonst wird die Session terminiert und nichts wars mit Zugriff.

      Also gehe ich her, schau ob das Ende der Sessions id gleich meiner IP ist, und entscheide somit über die Sessions Rechte bzw. Zugriffsrechte der Webseite.
      Zuletzt geändert von LGC; 31.08.2005, 22:45.

      Kommentar


      • #4
        warum schreibst du dann nicht einfach beim starten der session die ip-adresse, von der die anfrage kam, in die session ($_SESSION['IP'] = ...) - und fragst bei den folgenden zugriffen einfach ab, ob da noch übereinstimmung besteht?
        halte ich für sinnvoller, als an der session-ID rumzumanipulieren.


        sei dir aber der generellen nachteile bewusst: AOL beispielsweise hat ein ziemlich großes proxyserver-netzwerk, da können die anfragen von ein und demselben user durchaus über verschiedene IPs reinkommen, auch direkt aufeinanderfolgende.


        wenn du session-hijacking bei GET-übergabe der SID für derart gefährlich hältst - dann wäre es am konsequentesten, auf GET-übergabe zu verzichten.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Das mit $_SESSION... ist natürlich auch eine Lösung. Ich traue mich aber nicht ganz daran zu glauben, denn wenn trotz session_destroy(); die Session mittels der SID wieder ins Leben gerufen werden kann, kann ich natürlich schlecht Daten abgleichen oder vertrauen.

          Natürlich ist das auch so machbar, nur ich hab es dann lieder indentsicher. Lieber gleich an Hand der Sess id bestimmen.

          Wenn das bei AOL so ist, tun mir die AOL Nutzer wirklich leid. Die ärgern sich halt dann. Das AOL in meinen Augen sowieso kriminell genug ist, brauch ich nicht jedem erzählen. Sowas kommt mir nich auf den Rechner. Ich werde die Sicherheit nicht daran leiden lasen, weil ein Provider aus der Reihe tanzt, es geht schliesslich um meinen Server, und später um die Daten des Kunden.

          Mit der ganzen Sicherheit hin und her. Ich habe schon gesehen wie schnell Professionelle Hacker sich Zugriff verschaffen, und mit welchen Mitteln Sie an das Werk gehen. Kurz gesagt, war ich früher auch mal mit den bösen Jungs einig. Hab dann aber als ich meine Laufbahn in Richtung eigene Webseiten gerichtet habe eingesehen, dass es nicht schön ist etwas zu zerstören, was andere sich shart zusammenarbeiten.

          Leider gehören solche Dinge zu den Lieblingsversuchen, die bei einem Hackangriff ausgenutzt werden. Das beste, die Tools von heute machen das automatisch. Die Durchforsten zig Linklisten und Suchmaschinen, und Testen das aus. Und wenn die Konkuernz neidisch ist, wartet sie auch manschmal an der Reffererstaistik. Die Links die erst vor ein paar Minuten auftauchen, sind ganz leichtes Futter.

          Wo ein Schloß ist ist past auch ein Schlüssel. Ich will es keinem bösen Buben leicht machen.

          Ich übergebe nichts über GET! Das macht ein LAMP sehr gerne selbst!
          Zuletzt geändert von LGC; 31.08.2005, 23:29.

          Kommentar


          • #6
            Original geschrieben von LGC
            Ich übergebe nichts über GET! Das macht ein LAMP sehr gerne selbst!
            ja dann gewöhn's ihm doch ab - und stelle auf SID-übergabe per cookie um.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar

            Lädt...
            X