2012-04-27 7 views
6

Ich habe eine Datenbank volle Website-URLs, die Primärschlüssel die $_SERVER["HTTP_HOST"] der Website ist.

Wenn ein Benutzer navigiert zu ... sagen wir www.my-epic-example-url.com, Es wird die Datenbank verbinden und verwenden Sie die $_SERVER["HTTP_HOST"] dieser Websites, dann ruft alle Daten auf diese Website verweisen!

Was ich möchte wissen, ist, wie sicher ist $_SERVER["HTTP_HOST"]?

Kann es von außen verändert werden?

Der einzige Grund, warum ich frage ist, weil ich einen artical vor einiger Zeit gelesen (kann nicht daran erinnern, wo es war) sagen, vorsichtig sein, wenn $ _SERVER verwenden, da es nicht sicher ist ...

Ist das wahr?

+2

mögliche Duplikate von [Welche $ _SERVER-Variablen sind sicher?] (Http://stackoverflow.com/questions/6474783/which-server-variables-are-safe) – mellamokb

+0

Bitte schließen Sie das nicht als Dupe, es ist jetzt eine zirkuläre Referenz, da ich aus bin Verknüpfung [Welche $ _SERVER Variablen sind sicher?] (http://stackoverflow.com/questions/6474783/which-server-variables-are-safe) für eine detaillierte Erklärung von 'HTTP_HOST' hier . – deceze

Antwort

13

$_SERVER["HTTP_HOST"] ist der HTTP-Header Host, wie vom Client gesendet. Das macht diesen Header im Allgemeinen unsicher.

Aber, wenn Sie in einem typischen virtuellen Host-Setup sind, in denen der Web-Server entscheidet, welches Skript ausgeführt werden basierend auf Virtual Konfigurationen, die wiederum ausgelöst durch den HTTP-Host Header, Ihr Skript sollte nicht erhalten ausgeführt, es sei denn Ein bekannter Wert auf der weißen Liste wurde in diesem Header empfangen.

Wenn der Webserver kümmert sich nicht um die Host Header und führt ein bestimmtes Skript für alle Anfragen, dann könnte dieser Wert absolut alles sein.

+0

Sie sollten etwas davon in Ihre umfassende Antwort auf den Betrogenen hinzufügen. Sie erklären den VirtualHost-Teil dort nicht speziell. –

+3

Fertig, bezog sich auf diese Antwort von der anderen. :) – deceze

+0

Beachten Sie, dass sie Möglichkeiten zur Umgehung der Beschränkung Virtualhost bekannt sind, wie mit absoluter URI in der HTTP-Anforderung, führt dies zu einem Free-to-Play-Host-Header. Also ist das * generell unsicher * sehr wahr. – regilero