Bobby: SESSION-ID aus ausgelesenen Links entfernen

Moin

Ich lese aus einer Datei mittels get_content und der entsprechenden REGEX alle Links aus einer seite aus. Leider sind an den Links die SESSIDs Da ich nun gern den Links die SESSID nehmen möchte und diese ID ja mit verschiedenen GET_variablen angehangen sein kann, ist die Frage ob ich die SESSID irgendwo ausgelesen bekomme um diese vom Link entfernen lassen zu können?

Gruß Bobby

--
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
### Henry L. Mencken ###
-> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
## Viktor Frankl ###
ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
  1. Hello,

    Ich lese aus einer Datei mittels get_content und der entsprechenden REGEX alle Links aus einer seite aus. Leider sind an den Links die SESSIDs Da ich nun gern den Links die SESSID nehmen möchte und diese ID ja mit verschiedenen GET_variablen angehangen sein kann, ist die Frage ob ich die SESSID irgendwo ausgelesen bekomme um diese vom Link entfernen lassen zu können?

    Was hast Du denn vor?
    Du liest fremde Seiten aus?
    Du willst die ausgelesenen Links hinterher irgendwo wieder publizieren?

    Im Prinzip können die von Dir ermittelten Ressourcen quasi-transient sein. Dann haben sie also ein "Verfallsdatum". Das kann z.B. vom Datum abhängen oder von "fünfmal abgerufen" oder Kombinationen daraus. Du hättest dann überhaupt keine Chance für eine nachhaltige Gültigkeit des Ressource-Bezeichners.

    Könntest Du uns daher noch ein paar mehr Hinweise geben? Wie sieht so ein Link aus, wie soll er nachher aussehen bzw. welche Bedingungen soll er erfüllen?

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Moin

      Was hast Du denn vor?

      ich will nen kleinen Linkchecker basteln...

      Du liest fremde Seiten aus?

      per file_getContents()

      Du willst die ausgelesenen Links hinterher irgendwo wieder publizieren?

      Nein. Sondern nur den headerstatus prüfen.

      Könntest Du uns daher noch ein paar mehr Hinweise geben? Wie sieht so ein Link aus, wie soll er nachher aussehen bzw. welche Bedingungen soll er erfüllen?

      z.B.
      [78] => /modules/shop/kat28_Bouldermuetzen.htm?PHPSESSID=825ee6fcc65d59bc88d57ee39f228886&sv=1

      [79] => /modules/shop/kat28_Bouldermuetzen.htm?PHPSESSID=76633f95e51c0982a3a4f7e33d602382&sv=1

      Das wäre so eine Dublette mit nur verschiedener Session ID. Aber ich hab grad ne Idee. Ich rufe eine seite 2 mal auf und schau welche Daten sich an der URL verändern und kann bestimmen was rausgeschnitten werden kann.

      Gruß Bobby

      --
      -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
      ### Henry L. Mencken ###
      -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
      ## Viktor Frankl ###
      ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
      1. Hello,

        Könntest Du uns daher noch ein paar mehr Hinweise geben? Wie sieht so ein Link aus, wie soll er nachher aussehen bzw. welche Bedingungen soll er erfüllen?

        z.B.
        [78] => /modules/shop/kat28_Bouldermuetzen.htm?PHPSESSID=825ee6fcc65d59bc88d57ee39f228886&sv=1

        [79] => /modules/shop/kat28_Bouldermuetzen.htm?PHPSESSID=76633f95e51c0982a3a4f7e33d602382&sv=1

        Wenn Du einfach mal ausprobierst, die Aufrufparameter wahlweise wegzulassen, dann wirst Du feststellen, dass Du unterschiedliche Ressourcen angeboten bekommst. Es ist also nicht möglich, über die Existenz der eigentlichen Ressource etwas sinnvolles auszusagen.

        Alternativ könntest Du nur die Existenz der URL prüfen, also ohne die Requestparameter.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
  2. Hi!

    Da ich nun gern den Links die SESSID nehmen möchte und diese ID ja mit verschiedenen GET_variablen angehangen sein kann, ist die Frage ob ich die SESSID irgendwo ausgelesen bekomme um diese vom Link entfernen lassen zu können?

    PHP kennt die Funktion parse_url() zum Parsen von URLs. Dort findet sich auch ein Verweis auf parse_str() zum Auseinandernehmen von Querystrings. Nach dem Entfernen der Session-ID kannst du alles wieder zusammenbauen: http_build_query() und ..._url().

    Lo!

    1. Hello,

      Da ich nun gern den Links die SESSID nehmen möchte und diese ID ja mit verschiedenen GET_variablen angehangen sein kann, ist die Frage ob ich die SESSID irgendwo ausgelesen bekomme um diese vom Link entfernen lassen zu können?

      PHP kennt die Funktion parse_url() zum Parsen von URLs. Dort findet sich auch ein Verweis auf parse_str() zum Auseinandernehmen von Querystrings. Nach dem Entfernen der Session-ID kannst du alles wieder zusammenbauen: http_build_query() und ..._url().

      Dazu muss man aber wissen, hinter welchem Parameter sich die Session-ID verbirgt. Bei PHP ist sie zwar immer genauso lang, aber sie kann immer noch unterschiedliche Bezeichner haben.

      Allgemein kann sie dann aber auch noch unterschiedliche Aufbauten haben und auch aus mehreren Einzelparametern bestehen...

      Eine Lösung gibt es also nur im Spezialfall.

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Moin

        Dazu muss man aber wissen, hinter welchem Parameter sich die Session-ID verbirgt.

        Genau das ist mein Problem

        Bei PHP ist sie zwar immer genauso lang, aber sie kann immer noch unterschiedliche Bezeichner haben.

        Das ist glaub ich so nicht richtig. Man kann die Session-ID auch in der Länge bestimmen. Glaub ich zumindest.

        Wie gesagt. Ich werde die Seite 2 mal einlesen und die sich veränderten GET_Vars rausschneiden. Sollte für 90% der Fälle klappen...

        Gruß Bobby

        --
        -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
        ### Henry L. Mencken ###
        -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
        ## Viktor Frankl ###
        ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
        1. Hello,

          Bei PHP ist sie zwar immer genauso lang, aber sie kann immer noch unterschiedliche Bezeichner haben.

          Das ist glaub ich so nicht richtig. Man kann die Session-ID auch in der Länge bestimmen. Glaub ich zumindest.

          Das würde ich gerne genauer wissen, solltest Du die Stelle im Handbuch (wieder-)finden.
          MMn ist die Session-ID bei Benutzung der Standardmechanismen von PHP immer eine 32-stellige Hexadezimalzahl. Man kann zwar deren (interne) Entropie beeinflussen, aber nicht ihre Länge.

          Solltest Du da andere Informationen haben, würde ich mich über Info freuen.

          Es ist aber durchaus möglich, die Standardmechanismen für die Ermittlung der Session-ID von PHP mit PHP-Mitteln auszuweiten bzw. zu umgehen.

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
          1. Moin

            MMn ist die Session-ID bei Benutzung der Standardmechanismen von PHP immer eine 32-stellige Hexadezimalzahl. Man kann zwar deren (interne) Entropie beeinflussen, aber nicht ihre Länge.

            http://www.php.net/manual/de/function.session-id.php

            sagt nix aus über die Länge und Struktur. Damit sollte die Länge bestimmbar sein.

            Gruß Bobby

            --
            -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
            ### Henry L. Mencken ###
            -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
            ## Viktor Frankl ###
            ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
            1. Hello,

              MMn ist die Session-ID bei Benutzung der Standardmechanismen von PHP immer eine 32-stellige Hexadezimalzahl. Man kann zwar deren (interne) Entropie beeinflussen, aber nicht ihre Länge.

              http://www.php.net/manual/de/function.session-id.php

              sagt nix aus über die Länge und Struktur. Damit sollte die Länge bestimmbar sein.

              Doch, über die Struktur sagt sie etwas aus. Sie sagt, dass nur ein bestimmter Zeichenvorrat genutzt werden darf: "Zum Beispiel erlaubt die dateibasierte Session-Prozedur nur Zeichen im Bereich a-z A-Z 0-9 , (Komma) und - (Minus)!"

              Wenn die Scripte nun sowohl auf Linux, als auch auf WinDOS laufen sollen, dann kann man den Unterschied zwischen [a-z] und [A-Z] nicht nutzen, da WinDOS hier beim Dateinamen nicht unterscheidet.

              Die Länge ist sicherlich noch frei wählbar.

              Mit der Zuweisung in session_id() durchbrichst Du aber den Standardmechanismus der Session-ID in PHP. Da musst Du schon eine ganze Menge selber implementieren. Das ist schon etwas anspruchsvoller oder vielleicht sogar extrem schwierig, da PHP keine qualifizierten Fehlermeldungen gibt (...)

              Liebe Grüße aus dem schönen Oberharz

              Tom vom Berg

              --
               ☻_
              /▌
              / \ Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
          2. Hi,

            MMn ist die Session-ID bei Benutzung der Standardmechanismen von PHP immer eine 32-stellige Hexadezimalzahl. Man kann zwar deren (interne) Entropie beeinflussen, aber nicht ihre Länge.

            Je nach Konfiguration von session.hash_function und session.hash_bits_per_character dürften da durchaus unterschiedlich „lange“ Session-IDs herauskommen können.

            MfG ChrisB

            --
            RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
            1. Hello Chris,

              MMn ist die Session-ID bei Benutzung der Standardmechanismen von PHP immer eine 32-stellige Hexadezimalzahl. Man kann zwar deren (interne) Entropie beeinflussen, aber nicht ihre Länge.

              Je nach Konfiguration von session.hash_function und session.hash_bits_per_character dürften da durchaus unterschiedlich „lange“ Session-IDs herauskommen können.

              DER war mir zwar entfallen, aber auf die Länge der _lesbaren_ Session-ID, um die es hier gehen würde, hat diese Einstellung mMn auch keinen Einfluss.

              Wenn Bobby eine Regel (RexExp) für die Erkennung der Session-ID aufbauen sollte, kann er immer noch von 32 Zeichen ausgehen, vorausgestzt, der Standardmechanismus von PHP wurde benutzt.

              Bezogen auf sein Urproblem bleibt es also immer eine temporäre Speziallösung.

              Liebe Grüße aus dem schönen Oberharz

              Tom vom Berg

              --
               ☻_
              /▌
              / \ Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
              1. Hi,

                Je nach Konfiguration von session.hash_function und session.hash_bits_per_character dürften da durchaus unterschiedlich „lange“ Session-IDs herauskommen können.

                DER war mir zwar entfallen, aber auf die Länge der _lesbaren_ Session-ID, um die es hier gehen würde, hat diese Einstellung mMn auch keinen Einfluss.

                Doch, natürlich hat letztere einen Einfluss darauf.

                4 Bits ergeben 40 Zeichen,
                5 Bits ergeben 32 Zeichen,
                6 Bits ergeben 27 Zeichen.

                (Bei allen bei mir zur Verfügung stehenden Hash-Algorithmen außer MD2, das liefert 32 Zeichen für 4 Bits, 26 für 5 und 22 für 6.)

                MfG ChrisB

                --
                RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
          3. Hi,

            Das ist glaub ich so nicht richtig. Man kann die Session-ID auch in der Länge bestimmen. Glaub ich zumindest.
            Das würde ich gerne genauer wissen, solltest Du die Stelle im Handbuch (wieder-)finden.

            kommt darauf an, welches Handbuch Du meinst. Es wurde keine Aussage darüber getroffen, welcher Art die ausgelesene Seite ist und welchem System die dort verewigten Session-IDs sind. Vielleicht ist es nur ein dreistelliger dezimaler Zähler, vielleicht auch ein Base64-kodierter String mit 256 Zeichen. Oder etwas anderes, noch viel komplexeres.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Hello,

              Das würde ich gerne genauer wissen, solltest Du die Stelle im Handbuch (wieder-)finden.

              kommt darauf an, welches Handbuch Du meinst. Es wurde keine Aussage darüber getroffen, welcher Art die ausgelesene Seite ist und welchem System die dort verewigten Session-IDs sind. Vielleicht ist es nur ein dreistelliger dezimaler Zähler, vielleicht auch ein Base64-kodierter String mit 256 Zeichen. Oder etwas anderes, noch viel komplexeres.

              Aus dem Verlauf des Threads solltest Du erkennen können, dass ich das PHP-Handbuch meine.
              Es ist mir nicht klar, ob und wie man bei Nutzung des Standard-Sessionmechanismus von PHP die (angezeigte) Länge der SID in der URi steuern kann.

              Ich habe auch das Posting von ChrisB gelesen
              https://forum.selfhtml.org/?t=203980&m=1380423
              aber kann dem im Moment leider noch nicht folgen. Ich würde es gerne ausprobieren, worauf er sich bezieht, ob ich ihn denn richtig verstanden habe: die Anzahl der Bits pro Stelle wirken sich auch auf die Länge der Sequenz für die SID aus?

              Ich dachte bisher, dass sie sich nur auf die Anzahl der möglichenn SIDs auswirken würden.

              Liebe Grüße aus dem schönen Oberharz

              Tom vom Berg

              --
               ☻_
              /▌
              / \ Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
              1. Hi,

                Ich habe auch das Posting von ChrisB gelesen
                https://forum.selfhtml.org/?t=203980&m=1380423
                aber kann dem im Moment leider noch nicht folgen. Ich würde es gerne ausprobieren, worauf er sich bezieht, ob ich ihn denn richtig verstanden habe: die Anzahl der Bits pro Stelle wirken sich auch auf die Länge der Sequenz für die SID aus?

                Ich dachte bisher, dass sie sich nur auf die Anzahl der möglichenn SIDs auswirken würden.

                Erst mal wird ein Zufallswert gebildet - $someRandomData wird gehashed, session.hash_function bestimmt wie:
                “session.hash_function allows you to specify the hash algorithm used to generate the session IDs. '0' means MD5 (128 bits) and '1' means SHA-1 (160 bits).”
                Du hast dann als Ergebnis also 128 oder 160 Bit reine (Zufalls-)Information.
                (In so fern wirkt sich die Wahl des Hashverfahrens also schon auf die Menge möglicher Werte aus.)

                Diese 128 bzw. 160 Bit werden dann *anschließend* kodiert, um sie als Session-ID verwenden zu können.
                Und je nachdem, ob dabei nun 4, 5 oder 6 Bit je Zeichen untergebracht werden (das legt session.hash_bits_per_character fest), ergibt sich daraus eine Session-ID bestimmter Länge.

                MfG ChrisB

                --
                RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
              2. Hi,

                kommt darauf an, welches Handbuch Du meinst.
                Aus dem Verlauf des Threads solltest Du erkennen können, dass ich das PHP-Handbuch meine.

                aus dem Verlauf meiner Posting-Geschichte solltest Du erkennen können, dass ich eben genau diese triviale Erkenntnis in Frage gestellt habe. Sie ist keinesfalls selbstverständlich und wird in diesem Thread dennoch als selbstverständlich vorausgesetzt. Das ist für mich Grund genug, eine sich bietende Gelegenheit zu ergreifen, Zweifel kundzutun.

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. Hello,

                  kommt darauf an, welches Handbuch Du meinst.
                  Aus dem Verlauf des Threads solltest Du erkennen können, dass ich das PHP-Handbuch meine.

                  aus dem Verlauf meiner Posting-Geschichte solltest Du erkennen können, dass ich eben genau diese triviale Erkenntnis in Frage gestellt habe. Sie ist keinesfalls selbstverständlich und wird in diesem Thread dennoch als selbstverständlich vorausgesetzt. Das ist für mich Grund genug, eine sich bietende Gelegenheit zu ergreifen, Zweifel kundzutun.

                  Zweifel retten die Welt. Also bitte weiter so :-)

                  Liebe Grüße aus dem schönen Oberharz

                  Tom vom Berg

                  --
                   ☻_
                  /▌
                  / \ Nur selber lernen macht schlau
                  http://bergpost.annerschbarrich.de
                  1. Hi,

                    Zweifel retten die Welt. Also bitte weiter so :-)

                    <grüß art="zackig"> Sir, ja, Sir! </grüß>

                    Cheatah, sich die Stirn reibend und zweifelnd, ob der Gruß nicht etwas zu zackig war ...

                    --
                    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                    X-Will-Answer-Email: No
                    X-Please-Search-Archive-First: Absolutely Yes
      2. Hi!

        [...] ob ich die SESSID irgendwo ausgelesen bekomme [...]
        [parsen]
        Dazu muss man aber wissen, hinter welchem Parameter sich die Session-ID verbirgt. Bei PHP ist sie zwar immer genauso lang, aber sie kann immer noch unterschiedliche Bezeichner haben.

        Ja, in welchem Parameter sich die Session-ID befindet, und ob es überhaupt eine solche ist, weiß nur das verarbeitende Script. Anhand der von außen zu sehenden Merkmale (URL) kann man nur raten.

        Lo!