Ankündigung

Einklappen
Keine Ankündigung bisher.

message-system sicher machen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • message-system sicher machen

    Hi,
    ich möchte ein Message System, wie in einem Forum bauen.
    In einer tabelle bewahre ich ALLE Messages von allen Benutzern auf. Mit
    dem Feld user_id wird eine Message einem User zugeordnet. Soweit so
    gut!
    Jetzt ruft ein Benutzer all seine Messages auf (SELECT * FROM MESSAGES
    WHERE USER_ID = $variable) und dann werden alle Messages mit einem kurzen titel angezeigt. Klickt man auf den Titel, soll der ganze Text angezeigt werden.
    Im prinzip funzt das ja, indem ich die Message per <htmllink>?message_id=123 aufrufe. Problem hierbei ist nur, dass dieser Link manipulierbar ist, ein böser Mensch, die id einfach austauschen kann und somit möglicherweise eine Message zu Gesicht bekommt, die nicht für ihn bestimmt war.
    Wie kann ich das besser lösen bzw. sicher machen?
    Danke,
    Olsen

  • #2
    Hallo,

    Du könntest mit hidden-Feldern arbeiten. Besser ist, die Daten mit md5() zu verschlüsseln
    schau Dir hierzu mal folgenden Link an:
    http://de3.php.net/manual/de/function.md5.php

    Gruß,
    K.

    Kommentar


    • #3
      Re: message-system sicher machen

      Zitat von Olsen
      Im prinzip funzt das ja, indem ich die Message per <htmllink>?message_id=123 aufrufe. Problem hierbei ist nur, dass dieser Link manipulierbar ist, ein böser Mensch, die id einfach austauschen kann und somit möglicherweise eine Message zu Gesicht bekommt, die nicht für ihn bestimmt war.
      Hast wohl T-Hack gelesen ^^


      Simpel .. du hast ja irgendwo eine Session, mit der du den User identifizierst? .. den nirgendwo her musstest du ja schon wissen, welche Messages gelistet werden sollen.

      Bei der Abfrage prüftst du diese ID gleich nochmal mit ...

      Kommentar


      • #4
        o.k., sessions zu verwenden und abzufragen ist sicher die einfachere Methode.

        md5() habe ich benutzt, um Anmeldedaten zu verschlüsseln...

        T-Hack?

        Kommentar


        • #5
          Zitat von Kamalo
          T-Hack?
          ´

          http://www.phpfriend.de/ftopic19474.html

          Kommentar


          • #6
            an sessions und md5 habe ich auch schon gedacht, wusste aber nicht, wie ich das in diesem fall anwenden soll.
            ich meine, ich habe ja theoretisch mehrere nachrichten aufgelistet. welche davon soll ich denn in einer session registrieren? und wie sollte das mit der verschlüsselung laufen?
            bitte ein kleines konkretes beispiel.
            danke

            Kommentar


            • #7
              Zitat von Olsen
              an sessions und md5 habe ich auch schon gedacht, wusste aber nicht, wie ich das in diesem fall anwenden soll.
              entweder hat Kamalo dich falsch verstanden .. oder ich ^^

              md5() bringt dir gar nichts
              Sessions bringen dir in bezug auf die Messages und derenSicherheit auch nicht viel ...

              Wie ich schon sagte:
              -> Beim Anzeigen einer konkreten Message: Gleich nochmal mit prüfen, ob der Benutzer diese Lesen kann. Auf die gleiche art, wie du schon festgelegt hast, welche Messages der Benutzer aufgelistet bekommen.

              Diese Info über den Benutzer hat mal üblicherweise in einer Session abgelegt ...

              Kommentar


              • #8
                jo,
                ich hatte ein brett vorm kopf. abfrage nach message_id UND user_id brachte das erwünschte ergebnis.
                trotzdem danke

                Kommentar


                • #9
                  wenn ich das richtig verstehe, logt sich doch jeder User mit einem Passwort ein?

                  Mit md5() wird das eingegebene Passwort in hexadezimal umgewandelt und so auch in die DB-Tabelle eingetragen. Es ist dann zwar im Browser sichtbar, aber unkenntlich.

                  Ein Beispiel für ein Einloggen mit md5:
                  Code:
                  }elseif(!$_POST['usr'] || $_POST['usr'] == "") { // bei fehlender Eingabe
                    echo '<p class="btext"align="center">Bitte geben Sie einen Benutzernamen ein !!!</p>'; 
                  }elseif(!$_POST['password'] || $_POST['password'] == "") { // bei fehlender Eingabe
                    echo '<p class="btext" align="center">Bitte geben Sie ein Passwort ein';
                    echo '<input type="hidden" name="usr" value="'.$_POST['usr'].'">'; 
                    }else{ 
                    $password = md5($password); // Verschlüsselung wird gesetzt
                    $query = @mysql_query("SELECT user, passwort FROM $admindb WHERE user = '".$_POST['usr']."'") or die ('<p class="high" align="center">Datenbank ist zur Zeit nicht zur erreichen, bitte wenden Sie sich an Ihren Administrator!</p>'); 
                    $result = @mysql_fetch_array($query) or die('<p class="high"align="center">Entschuldigung, bitte wenden Sie sich an Ihren Administrator!</p>');
                  Ausgabe eines Textes bei Falscheingabe:
                  Code:
                  if($password != $result['passwort']){ 
                      echo '<form action="index.php" method="post">'; 
                      echo '<p class="high" align="center">Das Passwort ist falsch!'; 
                      echo '<input type="hidden" name="usr" value="'.$_POST['usr'].'">'; 
                      echo '<input class="button" type="submit" name="zurueck" value="Zurück"></p>'; 
                      echo '</form>'; 
                      die; 
                    }
                  Die Abfrage über die User-Variable kann in eine session gepackt werden:
                  Code:
                  else
                   { 
                      $user = $result['user']; 
                      session_register('user'); 
                  	echo '<p class="text" align="center">Sie werden sofort weitergeleitet<meta http-equiv="refresh" content="2; url=messages.php">
                  </p>';
                  Bei Weiterleitung auf die Seite messages.php:
                  Code:
                  $user = $_SESSION['user'];
                  echo "Hallo, $user;
                  Hier kann der User direkt angesprochen werden oder aber der select-Befehl zur Anzeige der Messages abgesetzt werden...
                  auch unter Verwendung der Variablen $user:
                  Bspweise:
                  Code:
                  SELECT * FROM MESSAGES 
                  WHERE USER= $user
                  Dies soll nur ein Beispiel sein zu der Vorgehensweise, die ich mir vorstelle - wenn jemand da ein besseres Beispiel hat - ich hoffe, es ist trotz des langen Codes verständlich

                  Kommentar

                  Lädt...
                  X