Hartmut D.: Sessions

Hallo zusammen,
ich habe eine Grundsätzliche Frage zu den Sessions in PHP. Es geht um folgende Konfigurationsoption:

session.use_trans_sid

Ich würde, mit meinem leider zu geringen Wissen, behaupten, dass es sinnvoll wäre, die Session ID nicht sichtbar in der URL zu übertragen, weil dies ein Sicherheitsrisiko darstellen könnte, wie auch im Manual beschrieben. Trotzdem würde ich gerne mal die Meinungen der Profis hören. Ist es ratsam die ID nicht anzuzeigen, bzw. wann wäre es sinnvoll die Session ID sichtbar in der URL zu übertragen? Und wie wird die Session ID übertragen, wenn sie nicht in der URL angezeigt wird oder per Hidden Input übertragen wird?

Viele Grüße
Hartmut

  1. Hello,

    übertragen wird sie selbstverständlich immer.

    Wenn sie nicht im URi steht, dann i.d.R. im Header des Requests
    Musst Du einfach mal einen Header-Reader bauen oder benutzen.

    Web-Sniffer scheint leider nicht mehr zu funktionieren. Einen anderen öffentlichen kenne ich im Moment nicht...

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

    1. hi,

      übertragen wird sie selbstverständlich immer.

      Nö.

      Wenn sie nicht im URi steht, dann i.d.R. im Header des Requests

      Ja, und zwar als Cookie - in der Richtung Client -> Server aber nur, wenn der Client überhaupt Cookies akzeptiert.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. Hello,

        übertragen wird sie selbstverständlich immer.

        Nö.

        Stimmt natürlich. Ich hatte vorausgesetzt, dass das Generelle schon klar war... ;-)

        Wenn sie nicht im URi steht, dann i.d.R. im Header des Requests

        Ja, und zwar als Cookie - in der Richtung Client -> Server aber nur, wenn der Client überhaupt Cookies akzeptiert.

        und wenn die Domain bzw. der Pfad zur Ressource zum Cookie passt...

        Harzliche Grüße vom Berg
        http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau

  2. Hallo,

    Ich würde, mit meinem leider zu geringen Wissen, behaupten, dass es sinnvoll wäre, die Session ID nicht sichtbar in der URL zu übertragen, weil dies ein Sicherheitsrisiko darstellen könnte, wie auch im Manual beschrieben.

    inwiefern ein Sicherheitsrisiko? Ich halte es allenfalls für einen URL-kosmetischen Makel. Denn die SID wird in jedem Fall unverschlüsselt übertragen, kann also immer abgegriffen und/oder manipuliert werden.

    Und wie wird die Session ID übertragen, wenn sie nicht in der URL angezeigt wird oder per Hidden Input übertragen wird?

    Überleg mal, welche Möglichkeiten hast du denn dann noch? Nur noch per Cookie. Soweit ich weiß, ist es die Defaulteinstellung von PHP, eine SID per Cookie zu übertragen. Nur wenn das fehlschlägt (der Besucher keine Cookies akzeptiert), wird sie stattdessen als URL-Parameter übertragen.

    In beiden Fällen steht sie, wie gesagt, unverschlüsselt im HTTP-Header.

    Ciao,
     Martin

    --
    Viele Fachleute vertreten die Ansicht, jedes Feature eines Programms, das sich nicht auf Wunsch abstellen lässt, sei ein Bug.
    Außer bei Microsoft. Da ist es umgekehrt.
  3. Mir fallen spontan zwei Szenarien ein, in denen durch Übertragung der Session-ID als GET-Parameter die Session geklaut werden könnte:

    * Ein Benutzer Deines Webs kopiert einen URI und postet ihn in ein Forum, einen IM oder sonst wo hin. Wer jetzt diesen Link benutzt, bevor die Session ungültig wird, hat alle Rechte des Benutzers, der den URI kopiert hat.

    * Ein Angreifer bekommt Zugriff auf den Access-Log Deines Web-Servers. Darin findet er URIs mit Session-IDs und kann diese verwenden, um Sessions zu übernehmen. Dazu muss er nicht mal Zugriff auf den Server haben, sondern könnte auch Lücken in Serverskripten ausnutzen, z.B. wenn ein Skript Dateien abhängig von einem GET- oder POST-Parameter inkludiert und diesen nicht überprüft.

    Gruß,
    David

    1. hi,

      Mir fallen spontan zwei Szenarien ein, in denen durch Übertragung der Session-ID als GET-Parameter die Session geklaut werden könnte:

      * Ein Benutzer Deines Webs kopiert einen URI und postet ihn [...]

      * Ein Angreifer bekommt Zugriff auf den Access-Log Deines Web-Servers.

      Drittens: An ins Dokument eingebundene externe Ressourcen wird sie im Referrer übertragen.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }