Markus Trusk: Sessionstring nicht erscheinen lassen?

Hi,
da ich jetzt mein Board auf ein Board mit Login umschreiben will, bin ich bei einer Überlegung zu folgendem Problem gestoßen.
Wenn ich den Sessionstring bei jedem Link übergebe (was ich auch tun muss, da doch sonst die Session auf dem Weg irgendwann verloren geht) erscheint diese in der URL Zeile, was mich im Prinzip ja nicht stören würde. Das Problem ist nur wenn jemand auf ein anderes Posting mit der URl von diesem Posting verweisen will, und den Link zu diesem Posting setzt (der vielleicht irgendwie so aussieht ?posting=3434$cgisessid=7fdf67df67f67df6f), würde ja der Linkklicker den Sessionstring vom Linksetzer mitnehmen und ausgeloggt werden (da ich stets CGI::Session qw/-ip_match/ benutze, oder die Session sonst auch bei jedem Reload neu überprüfe).
Wie könnte ich das Problem umgehen?

Markus Trusk.

  1. hi,

    Wie könnte ich das Problem umgehen?

    in dem du die session-ID eben nicht per URL übergibst, sondern zwingend die nutzung von cookies vorraussetzt.

    gruss,
    wahsaga

    1. Hi,

      in dem du die session-ID eben nicht per URL übergibst, sondern zwingend die nutzung von cookies vorraussetzt.

      Das aber nicht dein ernst, oder? Den Benutzern, die keine Cookies verwenden können/wollen/dürfen soll ich vor den Kopf stoßen?

      Markus Trusk.

      1. hi,

        Das aber nicht dein ernst, oder? Den Benutzern, die keine Cookies verwenden können/wollen/dürfen soll ich vor den Kopf stoßen?

        doch, natürlich ist das mein ernst.

        andernfalls musst du mit diesem konzeptbedingten "sicherheitsproblem" wohl oder übel leben.

        gruss,
        wahsaga

    2. Hello,

      Wie könnte ich das Problem umgehen?

      in dem du die session-ID eben nicht per URL übergibst, sondern zwingend die nutzung von cookies vorraussetzt.

      oder eben auf Auth 401 zurückgreifst... (siehe oben)

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
  2. ist nur wenn jemand auf ein anderes Posting mit der URl von diesem Posting verweisen will, und den Link zu diesem Posting setzt

    ich schreiben einen Eintrag und setze im Eintrag einen Link auf einen anderen Beitrag...soweit richtig ?

    Hmm warum sollte hier die Session-ID Probleme bereiten ?
    ..und warum sollte sie mit abgespeichert werden (im Link) es ist ja nur die Beitrags-ID nötig

    1. ich schreiben einen Eintrag und setze im Eintrag einen Link auf einen anderen Beitrag...soweit richtig ?

      Ja.

      Hmm warum sollte hier die Session-ID Probleme bereiten ?
      ..und warum sollte sie mit abgespeichert werden (im Link) es ist ja nur die Beitrags-ID nötig

      Angenommen man liest das Posting nR 1000, dann sieht das in der URL Bar so in etwas aus:

      ?postingid=1000&sessid=nh5h4g3o6i4z5gh34

      Wenn jetzt jemand diesen Link in einem anderen Posting klickt, könnte das Board jetzt nicht unterscheiden, ob irgendwer diesen Link geklickt hat, oder ob jemand von der Hauptseite, wo die ganzen Beiträge aufgelistet sind dieses Posting ansehen will.
      Wenn das CGI Script ?postingid=1000&sessid=nh5h4g3o6i4z5gh34 übergeben bekommt, weiß es, es muss Postign Nr 1000 anzeigen und die Session auf Gültigkeit prüfen.
      Der Unterschied ist aber, dass jemand, der von der Hauptseite kommt, seine tatsächliche aktuelle Session an die URL, die zu dem Posting Nr 1000 führt, angehängt bekommt, aber jemand der diesen Link aus dem Posting klickt, wird ausgeloggt, weil der Link ja theoretisch schon Tage dort stehen würde, und das Baord erkennt, dass die Session bereits abgelaufen ist, und ausloggen würde, eben weil das Baord wieder überprüft: ?postingid=1000&sessid=nh5h4g3o6i4z5gh34  -> Das Posting Nr 1000 muss angezeigt werden + Session wird überprüft.

      Markus Trusk.

      1. Angenommen man liest das Posting nR 1000, dann sieht das in der URL Bar so in etwas aus:

        ?postingid=1000&sessid=nh5h4g3o6i4z5gh34

        Wenn jetzt jemand diesen Link in einem anderen Posting klickt

        ----

        genau hier würd ich ansetzen

        d.h. beim "verlinken" auf andere Beiträge, änderst vor einem Datenbank-Eintrag du den aktuellen Beitrag so, das Links mit Session-ID umgewandelt werden in Links ohne

        ...liest nun jemand einen Beitrag mit einem Link, veränderst du den Eintrag VOR der Darstellung so das die AKTUELLE Session-ID dranhängt...

  3. Hello,

    A: Session-IDs in der URL sind Mist. Du hast ja schon erkannt, dass
       das Probleme mit Bookmarks oder mit per eMail versandten URIs geben
       kann.

    B: Ein Abgleich der Session-ID mit der IP ist ungeeigent, da dann nur
       Besucher mit statischer oder quasi-statischer IP eine Chance haben
       ihre Session aufrecht zu erhalten.

    Abhilfe:
    Arbeite grundsätzlich mit Cookies.
    Prüfe als erstes, ob der Client Cookies annimmt
      Redirect senden und auswerten.
      hier werden dann "nur noch" Browser ausgesperrt, die keinen 301
      unterstützen. Die gibts kaum. Und wer alles abschaltet, hat selber
      Schuld, wenn nix geht.
    Wenn keine Cookies unterstützt werden, lass den Anmeldevorgang mit
      Auth 401 durchführen. Darauf kann man schließlich auch eine Session
      aufbauen.

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    1. Hallo,

      Arbeite grundsätzlich mit Cookies.
      Prüfe als erstes, ob der Client Cookies annimmt
        Redirect senden und auswerten.
        hier werden dann "nur noch" Browser ausgesperrt, die keinen 301
        unterstützen. Die gibts kaum.

      Das mit dem 301er verstehe ich jetzt nicht ganz, wenn ich ehrlich bin.

      Wenn keine Cookies unterstützt werden, lass den Anmeldevorgang mit
        Auth 401 durchführen. Darauf kann man schließlich auch eine Session
        aufbauen.

      Meinst du mit Auth 401 diese Authentifizierung wie hier im Forum, oder wie ist das genau gemeint?

      Ich glaube allmählig, dass ich doch Cookies verwenden werde, da diverse große Boards auch nur mit Cookies funktionieren, und da die meistens sowieso Cookies aktiviert haben.

      Markus Trusk.

      1. Hello,

        Das mit dem 301er verstehe ich jetzt nicht ganz, wenn ich ehrlich bin.

        Ich habe die Fehlernummern nun nicht exact im Kopf, aber ich meine "Moved Permanently" oder "Moved Temporarely" das müssten 301 und 303 sein, oder?

        Wenn man mit einer solchen Header-Umleitung einen Cookie verschickt, bekommt man den auf der umgeleiteten Seite sofort wieder, wenn der Browser die Umleitung unterstützt. Wenn nicht, kann der B ruhig Cookies unterstützen, die Testroutine bekommt aber nix mit davon, weil ja nix zurück kommt.

        Meinst du mit Auth 401 diese Authentifizierung wie hier im Forum, oder wie ist das genau gemeint?

        Ja. Das ist die gleiche Funktion, die da genutz wird im Browser.

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        1. Hallo,
          also leider verstehe ich nicht ganz, wie das funktioniert, aber ich habe mir gedacht, dass ich eifnach immer prüfe, ob ein Cookie vorhanden ist, und je nach dem die nächste Seite ausgebe, oder eben ausloggen lassen soll.

          Markus Trusk.