Andavos: Cookies und Sicherheit

Hallo,
also ich Optimiere gerade mein Board und möchte auch nicht das die Sicherheit zu kurz kommt, also ein Ausgleich zwischen Sicherheit und Komfort.

Also ich habe für User eine "Short-Anmeldung", sprich wenn der User das Board besucht, ist er gleich eingelogt.
Das passiert durch einen Cookie, in dem wird der Username und das Passwort (der md5-Hash) gespeichert.
Wenn beides mit der DB übereinstimmt, ist der User eingelogt.

Soweit so gut, allerdings sehe ich dort ein großes Sicherheitsloch drin.

Wenn "mein" User jetzt mit dem selbem PW auch in anderen Foren aktiv ist, so können ja die Admins der anderen Foren den md5-Hash der User sehen.

Jetzt müssten die nur ein Cookie schreiben, mit dem Namen "meines" User und dem md5-Hash.
Das Passwort müssten die ja nicht mal kennen.

Dann gehen die mit diesem Cookie auf mein Board und schon sind die als "mein" User eingelogt. Das wäre soweit tragisch, wenn ein Admin immer das gleiche PW benutzt (gleiche md5-Summe), so könnten Admins andere Board in mein Board einsteigen.

Kennt jemand einen Ausweg daraus, ohne das der Komfort zukurz kommt?
Also Zufallspasswörter und keine Cookies gehen nicht, denn sowas finde ich extrem störend an einen Board.

MFG
Andavos

--
http://www.php-einfach.de PHP lernen leicht gemacht
  1. Hallo Andavos,

    Das passiert durch einen Cookie, in dem wird der Username und das Passwort (der md5-Hash) gespeichert.

    Useranme sollte imho reichen - der User bekommt das Cookie eben nur, wenn er sich mit den richtigen Daten angemeldet hat (man möge mich korrigieren wenn das keine gute Idee ist :-)).

    Soweit so gut, allerdings sehe ich dort ein großes Sicherheitsloch drin.
    Wenn "mein" User jetzt mit dem selbem PW auch in anderen Foren aktiv ist, so können ja die Admins der anderen Foren den md5-Hash der User sehen.

    nein, können sie nicht - der Cookie kann nur von der Domain die ihn gesetzt hat ausgelesen werden.

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. Hallo,

      |nein, können sie nicht - der Cookie kann nur von der Domain die ihn gesetzt hat ausgelesen werden.

      Ich meinen einen User Cookie, und diese werden auf dem PC des User gespeichert und jeder mit einem Editor kann die Daten aulesen.

      Ein Cookie von meinem Forum sieht z.B. so aus:

      <<<< ==== Cookie ======= >>>>>>>>>
      Clanwissen_user
      Andavos
      localhost/PHP/ccb_latest/cb/
      1024
      3892743296
      29665874
      1463039632
      29645758
      *
      Clanwissen_pw
      6d0a8c7765ac747fcbcb8a9b8109aaf3
      localhost/PHP/ccb_latest/cb/
      1024
      3892743296
      29665874
      1463039632
      29645758
      *
      <<<< ==== Cookie Ende ======= >>>>>>>>>

      Wie man sieht steht unter Clanwissen_pw das Passwort (md5 Hash).
      Was ich komisch finde sind die Zahlen, denn wenn man Anda als Loginname nimmt, wird aus 3892743296 => 447776000 und aus 1463039632 => 2310959632

      Die restlichen Zahlen sind gleich.

      Wenn ich jetzt auf meinem Board Andavos heiße, und mich als Anda einloggen möchte, und ich den Hash von Anda habe (aus einem anderem Board), so schreibe ich da den neuen Username rein, den neuen Hash (aus dem anderem Board) und lasse dann mit einem Programm die Zahlen berechnen.

      Schon könnte ich als Anda da surfen, was riesen Schaden anrichten könnte wenn Anda der Admin ist.

      MFG
      Andavos

      --
      http://www.php-einfach.de PHP lernen leicht gemacht
      1. Hallo Andavos,

        nein, können sie nicht - der Cookie kann nur von der Domain die
        ihn gesetzt hat ausgelesen werden.

        Ich meinen einen User Cookie, und diese werden auf dem PC des User
        gespeichert und jeder mit einem Editor kann die Daten aulesen.

        Das ist Risiko des Users. Nicht zu aendern. Dafuer hat er Sorge zu
        tragen.

        Schon könnte ich als Anda da surfen, was riesen Schaden anrichten
        könnte wenn Anda der Admin ist.

        Dann muss Anda diesen Cookie halt nicht verwenden.

        Grüße,
         CK

        --
        Beware Evildoers for my deed is done and every little damsel in distress will be shelted!
        http://wwwtech.de/
        1. Hallo,

          |Dann muss Anda diesen Cookie halt nicht verwenden.

          Das Problem ist, das fast alle User das angeschaltet haben, und zu sagen das er es nicht machen soll ist auch nicht die tollste Lösung

          Aber ich glaube ich habe eine gute Idee:
          Wenn sich der User registiert, wird bei ihm eine Zufalls Zahl ermittelt, diese wird mit im Cookie gespeichert.
          Wenn er sich per Cookie anmeldet, dann müssen PW, Username und die Zufallszahl gleich sein, sonst geht das nicht.

          Da die Zufallszahl bei fast jedem User anders ist, sollte es schwer sein an die Zahl ranzukommen ohne Zugriff auf die DB

          MFG
          Andavos

          --
          http://www.php-einfach.de PHP lernen leicht gemacht
          1. Hallo Andavos,

            Dann muss Anda diesen Cookie halt nicht verwenden.

            Das Problem ist, das fast alle User das angeschaltet haben, und zu
            sagen das er es nicht machen soll ist auch nicht die tollste Lösung

            Schreibe die Risiken halt dazu.

            Wenn sich der User registiert, wird bei ihm eine Zufalls Zahl
            ermittelt, diese wird mit im Cookie gespeichert.

            Und schon hast du wieder das gleiche Problem. Wenn jemand fremdes
            Zugriff auf den Rechner hat, hat er auch diese Zahl.

            Warum machst du dir ueberhaupt Gedanken darum? Gib dem User ein
            Advisory an die Hand und ansonsten ignoriere das Problem.

            Grüße,
             CK

            --
            Auf der ganzen Welt gibt es nichts Weicheres und Schwaecheres als Wasser. Doch in der Art, wie es dem Harten zusetzt, kommt nichts ihm gleich.
            http://wwwtech.de/
            1. Hallo,

              |Und schon hast du wieder das gleiche Problem. Wenn jemand fremdes
              Zugriff auf den Rechner hat, hat er auch diese Zahl.

              Gut das stimmt, aber dann würde es nicht mehr reichen den PW Hash vom User zu kennen um sich einzuloggen.

              Da User sehr sehr oft nur 1 PW für allen Foren benutzen, haben die in allen Foren den gleichen PW Hash.
              Wenn jemand aus einem anderem Forum den Hash ausliest, dann kennt er den Hash auch aus meinem Forum und kann sich so einen Manipulierten Cookie bauen.

              Durch die Zufallszahl müsste der Angreifer der den Hash aus einem anderem Forum hat, auch die Zufallszahl aus meiner Tabelle haben bzw. den Cookie vom PC der Users haben um sich einzuloggen und das ist schonmal ein deutlich höherer Aufwand

              MFG
              Andavos

              --
              http://www.php-einfach.de PHP lernen leicht gemacht
  2. Hallo Andavos,

    Wenn "mein" User jetzt mit dem selbem PW auch in anderen Foren
    aktiv ist, so können ja die Admins der anderen Foren den md5-Hash
    der User sehen.

    Nein. Das Cookie wird nur gesendet, wenn Domain- und Path-Feld
    stimmen. Ein Cookie fuer www.selfhtml.org wird nicht an
    forum.de.selfhtml.org geschickt, und ein Cookie mit dem Pfad
    /foo/bar/ wird nicht an /bar/foo/ geschickt.

    Das Problem sehe ich woanders: es steht jedem frei, den Cookie
    mitzusniffen und dann seinerseits zu verwenden.

    Kennt jemand einen Ausweg daraus, ohne das der Komfort zukurz
    kommt?

    Sichere Verbindung (SSL). Du kannst dir ja ein Zertifikat von
    cacert.org ausstellen lassen.

    Grüße,
     CK

    --
    Willst du die Freuden dieser Welt geniessen, so musst du auch ihr Leid erdulden.
    http://wwwtech.de/
    1. Hallo,

      |Nein. Das Cookie wird nur gesendet, wenn Domain- und Path-Feld
      stimmen.

      Was ist wenn ich die kenne?
      Denn wenn ich auf einem Board als User Andavos angemeldet bin, und als Anda surfen möchte, dann muss ich nur den Cookie von Andavos entsprechend umändern.

      Siehe:
      [pref:t=83283&m=486540]

      MFG
      Andavos

      --
      http://www.php-einfach.de PHP lernen leicht gemacht
      1. Moin!

        |Nein. Das Cookie wird nur gesendet, wenn Domain- und Path-Feld
        stimmen.

        Was ist wenn ich die kenne?

        Es gibt genau zwei Angriffsszenarien bei Cookies:

        1. Der Rechner des Users wird erfolgreich angegriffen. In diesem Fall sind alle darauf gespeicherten Login-Informationen in der Hand des Angreifes. Lösungsmöglichkeit: Login-Informationen nicht auf dem Rechner abspeichern - also auch nicht im Cookie, und zwar KOMPLETT NICHT! Problem: Jeder moderne Browser bietet Passwordmanager, welche das Passwort zwar nicht im Cookie, aber sonst irgendwo speichern - dieser Ort ist ebenfalls angreifbar.

        2. Der Server wird erfolgreich angegriffen. Um dadurch in den Besitz des Cookies zu kommen, muß ein böses Skript unter der richtigen Domain im richtigen Pfad abgelegt UND vom Browser AUFGERUFEN werden.

        Wie wahrscheinlich schätzt du es ein, dass jemand auf deiner Domain ein fremdes Skript installieren kann? Bzw. wie wahrscheinlich ist es, dass jemand auch noch in das richtige Verzeichnis gelangt (manche Server haben ja eine Domain für alle User, aber unterschiedliche und voneinander abgegrenzte Verzeichnisse.

        Denn wenn ich auf einem Board als User Andavos angemeldet bin, und als Anda surfen möchte, dann muss ich nur den Cookie von Andavos entsprechend umändern.

        Richtig, aber dazu brauchst du als Angreifer entweder Zugriff auf den Rechner des eingeloggten Andavos, oder Zugriff auf den Server des Boards.

        Und wenn eine dieser Voraussetzungen erfüllt ist, dann sollte sich entweder Andavos über die Sicherheit seines privaten Rechners oder der Serveradmin des Board-Servers Gedanken über mehr Sicherheitsvorkehrungen machen.

        - Sven Rautenberg

        1. Hallo Sven,

          |Nein. Das Cookie wird nur gesendet, wenn Domain- und Path-Feld
          stimmen.

          Was ist wenn ich die kenne?

          Es gibt genau zwei Angriffsszenarien bei Cookies:

          Drei. Du hast vergessen zu erwaehnen, dass der Netzwerk-Verkehr
          mitgeschnitten werden kann.

          Grüße,
           CK

          --
          Willst du die Freuden dieser Welt geniessen, so musst du auch ihr Leid erdulden.
          http://wwwtech.de/
  3. Kleine Frage....
    Mit einem Cookie zwingst du doch deine Gäste, dass sie immer vom gleichen PC aus sich einloggen,
    also nicht mal jurz auch von der Uni oder so....
    Also..... eigentlich sind dann PC's und nicht 'intelligente Wesen' angemeldet
    Vielleicht nicht ganz das richtige.

    mfg Beat

    1. Hallo,
      natürlich kann der User sich auch von einem anderem PC anmelden, dazu muss er Username und PW in ein Loginformular eingeben.

      Und richtig, wenn man sich an den PC setzt, so wird man automatisch eingelogt, ob es der User ist oder nicht.
      Dadurch spart er sich das dauernde Einloggen im Forum, was ganz schön nerven kann.

      Das Pinzip ist wie beim wbb, phpbb, vB etc. mit dem Cookie setzen, das man bei der Rückkehr eingelogt ist.

      MFG
      Andavos

      --
      http://www.php-einfach.de PHP lernen leicht gemacht
  4. Hi!

    Also ich habe für User eine "Short-Anmeldung", sprich wenn der User das Board besucht, ist er gleich eingelogt.
    Das passiert durch einen Cookie, in dem wird der Username und das Passwort (der md5-Hash) gespeichert.
    Wenn beides mit der DB übereinstimmt, ist der User eingelogt.

    Also ich mach das immer so, dass ich einen zufaelligen String (20-stellig oder so) generiere, den in eine Datei zusammen mit dem Usernamen schreibe und nur den 20-stelligen String in den Cookie im Client schreibe.
    Wenn der User also einen Cookie sendet, gucke ich nach, welcher Username diesem Zufallsstring zugeordnet ist und weis, ob der User eingeloggt ist oder nicht. Wenn der Sting in meiner Datei nicht vorkommt, ist der User natürlich auch nicht eingeloggt. Wenn in der Datei zusätzlich noch eine Zeitangabe steht, dann kannst du damit auch einen Timeout machen.

    Gruß, Chris