lukas_G: Weiterleitung auf Error-Seite / "Hack"-Schutz

Hallo!

Ich stehe vor folgendem Problem:

Ich habe ein Nachrichten-System programmiert. Dort gibt es die Seite posteingang.php, die einmal alle Nachrichten, die der Benutzer bisher bekommen hat, anzeigt und einmal die ausgewählte Nachricht (posteingang.php?id=27). Die Nachrichten-ID, die angezeigt werden soll, soll durch die URL angegeben werden. Die ID wird in der DB gesucht und der Nachrichtentext wird ausgegeben.

Nun kann aber ein Benutzer einfach die ID in der URL ändern und erhält alle Nachrichten, die er sehen will, anschauen. Damit er dies NICHT tun kann, wird geprüft, ob der aktuell eingeloggte User mit dem Empfänger der Nachricht übereinstimmt.

Ich möchte das aber so handhaben, dass wenn ein User an der URL "rumpfuscht", eine Fehler-Seite (403.html) angezeigt bekommt. Dazu benötige ich eine Funktion, die das bewerkstelligt.

Welche Weiterleitungs-"Technik" bietet sich da an?

Danke für jede Hilfe
Lukas

  1. Hallo Lukas,

    Ich möchte das aber so handhaben, dass wenn ein User an der URL "rumpfuscht", eine Fehler-Seite (403.html) angezeigt bekommt.

    Das geht nicht. Du kannst nicht unterscheiden ob die URL von deinem System ausgegeben und per Link vom User aufgerufen wurde oder ob er selbst die URL per Hand aufgerufen hat. Aber wo liegt dein Problem? Du hast doch schon eine Abfrage eingebaut ob der User die Nachricht aufrufen darf ...

    Gruß,
    Tobias

    1. Hi,

      Danke schonmal für deine Antwort.
      Du hast Recht, dass ich nicht überprüfen kann, vom wem die URL aus "kommt". Aber ich kann überprüfen, ob der User die Rechte hat (also er ist Empfänger der Nachricht), die Nachricht einzusehen. Und in diesem Fall soll er weitergeleitet werden. Der Benutzer "darf" also herumpfuschen, solange er nur Nachrichten-ID's eingibt, die "ihm gehören" (also wo er der Empfänger ist). Ist dies nicht der Fall, soll er auf die Error-Seite weitergeleitet werden.

      Hat jemand einen Tipp?

      LG
      Lukas

      1. Hallo,

        Der Benutzer "darf" also herumpfuschen, solange er nur Nachrichten-ID's eingibt, die "ihm gehören" (also wo er der Empfänger ist). Ist dies nicht der Fall, soll er auf die Error-Seite weitergeleitet werden.

        alles recht und nett - aber wieso willst du "weiterleiten"?
        Gib einfach den HTTP-Status 403 aus, und den Inhalt, der im Fehlerfall erscheinen soll. Und zwar direkt unter der angeforderten, nicht erlaubten URL.

        Ciao,
         Martin

        --
        "Hier steht, deutsche Wissenschaftler hätten es im Experiment geschafft, die Lichtgeschwindigkeit auf wenige Zentimeter pro Sekunde zu verringern." - "Toll. Steht da auch, wie sie es gemacht haben?" - "Sie haben den Lichtstrahl durch eine Behörde geleitet."
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. Okay.
          Wie kann ich denn den HTTP-Status definieren?
          Geht das auch per header('')?
          Wenn ja, habe ich das Problem, dass ich vorher eine IF-Anweisung stehen habe (ob der Benutzer auch Empfänger ist) und daher wird das nicht gehen, da header ja immer oben stehen muss.
          Oder wie kann ich den Status definieren?

          LG
          Lukas

          1. Hi!

            Wie kann ich denn den HTTP-Status definieren?
            Geht das auch per header('')?

            Hat dir diese Frage das PHP-Handbuch nicht beantwortet?

            Wenn ja, habe ich das Problem, dass ich vorher eine IF-Anweisung stehen habe (ob der Benutzer auch Empfänger ist) und daher wird das nicht gehen, da header ja immer oben stehen muss.

            Nein, es kann auch "ganz unten" stehen. Wichtig ist nur, dass vorher keine Ausgabe erfolgt ist.

            Lo!

      2. Gib ihm dann doch einfach aus dass er diese Nachricht nicht sehen darf.
        Je nach Art  werden vielleicht auch mal Mails der Art "hey guck mal was mir xy geschrieben hat: ...posteingang.php?id=1234" verschickt. Wenn dann ein 403 kommt kriegst du nur Fehlermeldungen von den Usern.