Hoerschi: spricht was dagegen eingene sessions-id erzeugen ??

moin,

also ich habe jetzt eine menge über Session-ID gelesen, (so ganz hab ich die module net verstanden), also hab ich mir gedacht ich erstelle eine eigene sessions-id und schleife die durch die urls,
weil ich einen warenkorb ohne cookies schaffen will,
in einer eigen db speichere ich diese dann mit den bestellten artikeln und der menge.

so brauche ich dann nur die sessions-id durch zu schleifen oder ??

geht es noch einfacher, oder anders  ??

oder mache ich einen dicken fehler ?

es müsste doch so gehen oder ?

thx schon mal
Hoerschi

  1. Hoi,

    so brauche ich dann nur die sessions-id durch zu schleifen oder ??

    Ja.

    geht es noch einfacher, oder anders  ??

    Anders: ja. Einfacher: noe.

    oder mache ich einen dicken fehler ?

    Noe.

    es müsste doch so gehen oder ?

    Jepp.

    Gruesse,
     CK

    1. moin,

      erstmal schon mal big thx

      geht es noch einfacher, oder anders  ??

      Anders: ja. Einfacher: noe.

      wie den anders ???

      cu Hoerschi

      1. Hoi,

        geht es noch einfacher, oder anders  ??

        Anders: ja. Einfacher: noe.

        wie den anders ???

        Die Daten immer mit dir herum schleppen. Ist halt nicht besonders
        effizient, du hast riesen URLs oder auf jeder Seite Formulare.

        Gruesse,
         CK

        1. Hoi,

          geht es noch einfacher, oder anders  ??

          Anders: ja. Einfacher: noe.

          wie den anders ???

          Die Daten immer mit dir herum schleppen. Ist halt nicht besonders
          effizient, du hast riesen URLs oder auf jeder Seite Formulare.

          Gruesse,
          CK

          moin,

          nein ich schleife doch nur die sessions-id und wo ich mich gerade befinde mit durch + welche aktion, warenkorbdaten liegen in einer datei.

          cu hoerschi

          1. Hi,

            nein ich schleife doch nur die sessions-id und wo ich mich gerade
            befinde mit durch + welche aktion, warenkorbdaten liegen in einer
            datei.

            angenommen, ich errate eine fremde Session-ID - kann ich dann einfach in deren Warenkorb hinein schreiben?

            Viele Grüße
                  Michael

            1. Hallo,

              angenommen, ich errate eine fremde Session-ID - kann ich dann einfach in deren Warenkorb hinein schreiben?

              Da hast Du absolut recht, aber es kommt auch darauf an, woraus sich die Session-Id zusammensetzt. Wenn da zB u.a. auch der HTTP_USER_AGENT vercodet enthalten ist, oder sich die SessionId bei jedem Aufruf nach einem bestimmten Algorithmus ändert (d.h. in der DB die SessionId gespeichert wird, die als nächste vom Client erwartet wird), dann wird's schon schwieriger.

              Manfred

              1. Halihallo

                angenommen, ich errate eine fremde Session-ID - kann ich dann einfach in deren Warenkorb hinein schreiben?

                Da hast Du absolut recht, aber es kommt auch darauf an, woraus sich die Session-Id zusammensetzt. Wenn da zB u.a. auch der HTTP_USER_AGENT vercodet enthalten ist, oder sich die SessionId bei jedem Aufruf nach einem bestimmten Algorithmus ändert (d.h. in der DB die SessionId gespeichert wird, die als nächste vom Client erwartet wird), dann wird's schon schwieriger.

                Meistens läuft es ja wie folgt:

                Die SessionID nimmt z. B. linear zu (auto-increment Wert aus der DB), dazu wird ein SessionKey generiert (z. B. kombination aus Zeit, SessionID und meinetwegen einer kodierten "or" Operation mit HTTP_USER_AGENT und REMOTE_ADDR). Die SessionID, SessionKey und Sessiondaten werden dann in einer Tabelle gespeichert.
                Somit ist der Zugriff auf Sessiondaten ganz einfach (SessionID ist ein Integer) und dennoch ist die Datensicherheit gewährleistet (durch den kryptographischen SessionKey).

                Viele Grüsse

                Philipp

                1. Hi,

                  Die SessionID nimmt z. B. linear zu (auto-increment Wert aus der DB), dazu wird ein SessionKey generiert (z. B. kombination aus Zeit, SessionID und meinetwegen einer kodierten "or" Operation mit HTTP_USER_AGENT und REMOTE_ADDR). Die SessionID, SessionKey und Sessiondaten werden dann in einer Tabelle gespeichert.

                  warum so kompliziert? Ein Timestamp in Kombination mit einer (fast echten) Zufallszahl und das ganz MD5-gecryptet reicht doch auch, oder?

                  Man könnte in der Sessiontabelle auch die Session-ID an die IP und Useragent binden. Das reduziert die Chance von Angriffen auch, da es einige Faktoren mehr zu "erraten" gibt. Bindung an eine IP hat aber den Nachteil, dass es bei Clients mit dynamisch zugewiesenen IPs (z.B. Dialup-Accounts) schnell mal zu Problemen kommen kann.

                  Viele Grüsse,
                  Achim

                  1. Halihallo

                    Die SessionID nimmt z. B. linear zu (auto-increment Wert aus der DB), dazu wird ein SessionKey generiert (z. B. kombination aus Zeit, SessionID und meinetwegen einer kodierten "or" Operation mit HTTP_USER_AGENT und REMOTE_ADDR). Die SessionID, SessionKey und Sessiondaten werden dann in einer Tabelle gespeichert.

                    warum so kompliziert? Ein Timestamp in Kombination mit einer (fast echten) Zufallszahl und das ganz MD5-gecryptet reicht doch auch, oder?

                    Ja, selbstverständlich ;-)
                    Den User-Agent und die IP mitzukodieren ist schon etwas Luxus ;-)

                    Man könnte in der Sessiontabelle auch die Session-ID an die IP und Useragent binden. Das reduziert die Chance von Angriffen auch, da es einige Faktoren mehr zu "erraten" gibt.

                    Deswegen habe ich ja auch noch den User_Agent und die Remote_addr (IP) oben aufgeführt

                    Bindung an eine IP hat aber den Nachteil, dass es bei Clients mit dynamisch zugewiesenen IPs (z.B. Dialup-Accounts) schnell mal zu Problemen kommen kann.

                    Deswegen die Aufteilung in SessionID und SessionKey...
                    Der SessionKey wird ja nur einmal generiert und mit der entsprechenden SessionID in der Datenbank verknüpft. Und da der Key nur einmal generiert wird, kann man auch gut die IP des Clients mitkodieren; aber dann muss der SessionKey jedesmal mit der SessionID mitgeschleppt werden, da er nicht mehr mit 100% Wahrscheinlichkeit rekonstruiert weden kann.

                    Viele Grüsse

                    Philipp

                    1. Hi,

                      Deswegen die Aufteilung in SessionID und SessionKey...
                      Der SessionKey wird ja nur einmal generiert und mit der entsprechenden SessionID in der Datenbank verknüpft. Und da der Key nur einmal generiert wird, kann man auch gut die IP des Clients mitkodieren; aber dann muss der SessionKey jedesmal mit der SessionID mitgeschleppt werden, da er nicht mehr mit 100% Wahrscheinlichkeit rekonstruiert weden kann.

                      der Sinn dieser Trennung erschliesst sich mir trotzdem nicht ganz. Wenn Du die IP mal aussen vor lässt kannst Du eine eindeutige ID generieren, die eben eine "Verbindungskennung" darstellt. Wozu die Trennung? *grübel*

                      Viele Grüsse
                      Achim

                      1. Halihallo

                        Deswegen die Aufteilung in SessionID und SessionKey...
                        Der SessionKey wird ja nur einmal generiert und mit der entsprechenden SessionID in der Datenbank verknüpft. Und da der Key nur einmal generiert wird, kann man auch gut die IP des Clients mitkodieren; aber dann muss der SessionKey jedesmal mit der SessionID mitgeschleppt werden, da er nicht mehr mit 100% Wahrscheinlichkeit rekonstruiert weden kann.

                        der Sinn dieser Trennung erschliesst sich mir trotzdem nicht ganz. Wenn Du die IP mal aussen vor lässt kannst Du eine eindeutige ID generieren, die eben eine "Verbindungskennung" darstellt. Wozu die Trennung? *grübel*

                        Hast recht, ich hätte etwas stärker (oder überhaupt?) darauf eingehen sollen:

                        Also eigentlich ist es ja völlig einerlei. Theoretisch...
                        Aber ich bin der Meinung, dass eine Trennung der beiden schon Sinn macht (oder machen kann). Z. B. werden nummerische SessionID's sicher schneller verarbeitet, als alphanummerische. Der alphanummerische Anteil lagere ich immer in den SessionKey aus; der nummerische bleibt bei der SessionID, welche dem autoincrement-Wert der Datenbank entspricht. Somit ist auch sichergestellt, dass das SessionID.SessionKey - Paar 100% unique ist (das ist allein die SessionID, da ja mit jeder neuen Session die ID um eins erhöht wird). Bei einer kryptographischen codierung "könnte", auch wenn die Wahrscheinlichkeit genen 0 strebt, eine SessionID mal nicht unique sein und schon hat man ein Problem...

                        Aber das ist alles ziemlich nebensächlich. Die Performanceeinbussen (kleine Zahlen werden schneller verarbeitet) und Sicherheitsrisiken (autoincrement Spalten geben eineindeutigere Werte, als der Zufallsgenerator) sind ja nun wirklich *verdammt* (man möge es mir verzeihn) klein.

                        Hoffe, dass mein Text etwas Sinn ergibt (auch wenn die Diskussion ziemlich spitzfindig (ich meine, ich habe kein relevantes Gegenargument für eine Ein-Wert-Session) ist).

                        Viele Grüsse

                        Philipp

                        1. Hi,

                          ok, das hab jetzt sogar ich begriffen ;-)

                          Hoffe, dass mein Text etwas Sinn ergibt (auch wenn die Diskussion ziemlich spitzfindig (ich meine, ich habe kein relevantes Gegenargument für eine Ein-Wert-Session) ist).

                          Ach was, spitzfindig! Wie heisst es noch so schön unter Perlcodern:
                          "There`s more than one way to do it!"

                          In diesem Sinne,
                          viele Grüsse

                          Achim

                          1. Hi,

                            ok, das hab jetzt sogar ich begriffen ;-)

                            Hoffe, dass mein Text etwas Sinn ergibt (auch wenn die Diskussion ziemlich spitzfindig (ich meine, ich habe kein relevantes Gegenargument für eine Ein-Wert-Session) ist).

                            Ach was, spitzfindig! Wie heisst es noch so schön unter Perlcodern:
                            "There`s more than one way to do it!"

                            In diesem Sinne,
                            viele Grüsse

                            Achim

                            moin,

                            thx für eure anregungen,
                            ich habe jetzt mehrere faktoren einfliessen lassen um key & id zu generieren lassen,

                            und es funktioniert  wunderbar.

                            würde gerne den code hier zeigen,
                            aber dann ist es ja net mehr so sicher.

                            Thx @all
                            Cu Hoerschi

                            1. Halihallo Ihr zwei

                              ok, das hab jetzt sogar ich begriffen ;-)

                              Und ich hatte schon Angst, dass ich der deutschen Sprache nicht mehr mächtig bin ;-)

                              Hoffe, dass mein Text etwas Sinn ergibt (auch wenn die Diskussion ziemlich spitzfindig (ich meine, ich habe kein relevantes Gegenargument für eine Ein-Wert-Session) ist).

                              Ach was, spitzfindig! Wie heisst es noch so schön unter Perlcodern:
                              "There`s more than one way to do it!"

                              quod erat demonstrandum ;-)
                              Mein altes Latein wiedermal ausgraben...
                              Yep, in der Tat!

                              moin,

                              hullu,

                              würde gerne den code hier zeigen,
                              aber dann ist es ja net mehr so sicher.

                              so, so...
                              Also wenn du den kodierten String (bestehend aus IP, Timestamp etc) durch MD5 jagst und das mit einer Zufallszahl packst, dann hilft uns auch der Code nicht sehr viel weiter...
                              Aber hier besteht ja auch keine Verpflichtung seinen Code zu posten.

                              Viele Grüsse

                              Philipp

            2. angenommen, ich errate eine fremde Session-ID - kann ich dann einfach in deren Warenkorb hinein schreiben?

              hmmm was is da das problem...
              rein theo brauch man mit der Session ID aus einer Tabelle doch blos noch überprüfen ob die dazugehörige IP stimmt

              Gruß
              Steffen

            3. angenommen, ich errate eine fremde Session-ID - kann ich dann einfach in deren Warenkorb hinein schreiben?

              na das dürfte etwas schwieriger werden.
              es fliesen 6 faktoren ein, um die sessionsid zu erzeugen.

              u.a. time & pid & x-zeichen per zufall
              dann wird das ganze per blockverfahrn verschlüsselt,+
              ...

              wäre mal net zu sehen, wie man so was (leicht) knackt,

              klar ich will nicht ausschliessen das man das knacken kann, aber es dürfte einfacher sein sich auf den datenstrom zu setzen.

              cu Hoerschi