session id php

  • servus, ich hab mal eine frage die mich schon juckt :)

    ich hab folgenden php code... und jetzt heitßt es in den anleitungen ja die session id muss übermittelt werden per get, hidden oder cookie

    wie ist es dann möglich dass das funktioniert?? ich über gebe da aber überhaupt nix!!! und es findet die id auch wenn ich den browser schliese und wieder neu auf die seite gehe

    <?php
    session_start();
    header("Cache-control: private"); // IE6 fix

    $s = $_SESSION[session_id().'user'];
    // wie kann er hier die session id finden wo ich sie doch gar nicht
    // übermittle ??
    $user = unserialize($s);
    if($user == NULL){
    $user = new user;
    ...
    }
    if($user->berechtigung == ...
    ){
    $s = serialize($user);
    $_SESSION[session_id().'user'] = $s;
    }
    ...
    ?>
    <html>
    <head>
    </head>
    <body>
    ...
    </body>
    </html>

  • Zitat von dornröschen

    wie ist es dann möglich dass das funktioniert?? ich über gebe da aber überhaupt nix!!! und es findet die id auch wenn ich den browser schliese und wieder neu auf die seite gehe

    Das ist die Magie von php! Zieh Dir mal man seite von den sessions rein. Interessant ist der Teil "url_rewriter.tags". Diese Systemvariable von php legt fest, wo php überall die Session-ID anhängt.

    Per Default ist das:

    a=href (an jeden Link)
    area=href (an jede Image Map)
    frame=src (an jeden Frame)
    form= (an jedes Formular)
    fieldset= (an jedes Fieldset, auch ausserhalb eines Formulars)

    ...damit sollte so ziemlich alles abgedeckt sein. Ziemlich schlau. Wir haben das ganze mal in der Firma händisch implementiert, war grausam.

  • vielen dank,

    hat mir schon mal bischen klarheit verschafft. ;)

    aber wenn ich das richtig sehe ist das ja nicht das gelbe vom ei. die id wird ja im klartext übermittelt.

    also sollte ich das eigentlich ausschalten und über ssl machen? oder wie macht man das richtig?

    lg dominik

  • probier mal aus - ob du die session so einfach auf einen anderen Rechner übertragen kannst. Glaub nämlich nicht dass das geht.

    Klugheit ist gut - Geduld ist besser

  • ja wenn man die id weiss ist das kein problem und die könnte man aus dem traffic in dem fall rauslesen.. deshalb denk ich mal das das so nicht gerade klug ist... (es handelt sich um eine etwas kritische applikation... deshalb der aufwand)

  • Zitat von dornröschen

    aber wenn ich das richtig sehe ist das ja nicht das gelbe vom ei. die id wird ja im klartext übermittelt.

    Ja schon. Nur was hat ein Angreifer von der ID? Die ID ist ein interner Hashwert von php der quasi der "Verknüpfung von Webseiten" dient. http ist stateless, deshalb sind bei der Programmierung sessions sehr praktisch.

    Deine eigentlichen Daten speichert php allerdings am Server. Wenn Du ein bisschen mehr Sicherheit willst, drehst Du diese Funktion aber am besten wirklich ab und lässt nur mehr das Speichern in Cookies zu.

    Hier ist ein netter Artikel über php session security, mit google finden sich bestimmt noch ein paar andere.

  • Es gibt zum Beispiel die Möglichkeit, dass du in der DB die ID mit der IP-Adresse zu dem jeweiligen User eintragst und jedesmal überprüfst, ob die noch zusammenpassen.
    Weil es gibt ja immer noch das Problem, dass sich die Leute vor Cookies füchten und diese abdrehen.

    Klugheit ist gut - Geduld ist besser

  • Da fällt mir noch ein, dass man beim Auslesen der IP aufpassen muss, dass man auch die Client - IP erwischt und nicht irgendeine dazwischen von Routern oder so.

    Klugheit ist gut - Geduld ist besser

  • also ich lese die IP für ein selbst geschriebenes "sitestats" script aus und hatte noch nie eine 10.0.0.1 oder 192.168.... IP dabei.... du kriegst praktisch immer die WorldIP...

    btw: ich übergeb die session gar nicht im klartext... die sieht man nicht mal beim surfen... und trotzdem funkts. :)

    Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders!
    http://www.chuckbronson.net/

  • Problematisch kanns mit der session-id und IP-Adresse nur werden, wenn man riesen - Netze hinter Firewalls miteinbezieht. Etwa wenn ein Großteil der User in dem selben Konzern sitzen. Diese können dann untereinander wieder die session-id tauschen.

    Klugheit ist gut - Geduld ist besser

  • Zitat von b_UT

    Problematisch kanns mit der session-id und IP-Adresse nur werden, wenn man riesen - Netze hinter Firewalls miteinbezieht. Etwa wenn ein Großteil der User in dem selben Konzern sitzen. Diese können dann untereinander wieder die session-id tauschen.

    nicht nur dann.. ich würd mal sagen, ein viel größeres problem sind firmennetze, die einen öffentlichen ip-pool haben, und wos durchaus vorkommt, dass die einzelnen requests mit verschiedenen ip-adressen in das internet hinausgehen..

    hi, i'm a signature virus. copy me into your signature to help me spread.

  • Zitat von dornröschen

    ja wenn man die id weiss ist das kein problem und die könnte man aus dem traffic in dem fall rauslesen.. deshalb denk ich mal das das so nicht gerade klug ist... (es handelt sich um eine etwas kritische applikation... deshalb der aufwand)

    naja.. also du solltest mal natürlich über deine anwendung verhindern, dass man die session-ids von anderen eingeloggten benutzern zu gesicht bekommt (bzw. eine möglichkeit hat, an die ranzukommen), stichwort session hijacking...

    wenn es jemand schafft, die session id aus dem traffic rauszulesen, ist ja eigentlich eh schon alles egal, weil dann kann er genauso alle anderen daten aus dem traffic rauslesen.. und ob die sid dann über cookie/get/post läuft ist erst recht blunzn.
    wenn du davon ausgehst, dass ein angreifer die kommunikation mit dem webserver abhören kann, und die anwendung wirklich kritisch ist, dann wirst du um https wohl nicht herumkommen...

    hi, i'm a signature virus. copy me into your signature to help me spread.

  • mit login hab ich das schon öfters so realisiert, dass die session in der DB mitgeloggt wurde (nur die sessionid zum jeweiligen user). wenn nun einer daherkommt und sich mit dem selben user von woanders einloggt, dann wird die session-id überschrieben und der erste fliegt raus, mit der meldung, dass sich woanders wer mit dem selben user eingeloggt hat.
    hat jetzt weniger mit dem kopieren der session-id zu tun als mehr mit der sicherheit allgemein und dem weitergeben von usern. (wenn man pro account verkauft)

    Klugheit ist gut - Geduld ist besser

  • Würd auch sagen, wenn's auch nur ansatzweise kritisch ist, wirst du doch hoffentlich SSL verwenden. Weiß jetzt nicht wie's in PHP geht, aber theoretisch kannst du das user tracking dann ja über die SSL_session_id machen.

  • Per get/post die ID übergeben ist eine ganz schlechte Idee..

    Die momentan effizienteste Lösung ist sicher über Cookies oder SSL. Wobei Cookies sicher momentan die häufigste Variante ist.

    Da Big Pimp

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!