2012-04-27 53 views
6

Tengo una base de datos llena de direcciones URL del sitio web, la clave principal es $_SERVER["HTTP_HOST"] del sitio web.

Cuando un usuario navega a ... digamos www.my-epic-example-url.com, Conecta la base de datos y utiliza el $_SERVER["HTTP_HOST"] de esos sitios web, luego obtiene todos los datos que hacen referencia a ese sitio web!

Lo que quiero saber es qué tan seguro es $_SERVER["HTTP_HOST"]?

¿Se puede modificar externamente?

La única razón por la que pido es porque leí un artical hace un tiempo (no puede recordar dónde estaba) diciendo que tenga cuidado al usar $ _SERVER, ya que no es seguro ...

Es esto cierto?

+2

posible duplicado de [¿Qué variables de $ _SERVER son seguras?] (Http://stackoverflow.com/questions/6474783/which-server-variables-are-safe) – mellamokb

+0

No cierre esto como una estafa, ahora es una referencia circular ya que estoy vinculando desde [¿Qué variables de $ _SERVER son seguras?] (http://stackoverflow.com/questions/6474783/which-server-variables-are-safe) aquí para obtener una explicación detallada de 'HTTP_HOST' . – deceze

Respuesta

13

$_SERVER["HTTP_HOST"] es el encabezado HTTP Host, como enviado por el cliente. Eso hace que este encabezado generalmente inseguro.

Pero, si usted está en una configuración de máquina virtual típica en la que el servidor web decide qué secuencia de comandos para ejecutar basa en configuraciones de host virtual, que a su vez se desencadenan por la cabecera HTTP Host, la secuencia de comandos debe no se ejecutan a menos se recibió un valor conocido de la lista blanca en ese encabezado.

Si el servidor web no se preocupa por el encabezado Host y ejecuta un determinado script para todas y cada una de las solicitudes, este valor podría ser absolutamente cualquier cosa.

+0

Debe agregar algo de esto en su respuesta integral sobre el engañado. No explica específicamente la parte VirtualHost allí. –

+3

Hecho, remitido a esta respuesta por parte del otro. :) – deceze

+0

Tenga en cuenta que son formas conocidas de eludir la restricción VirtualHost, como el uso de URI absoluto en la solicitud HTTP, esto lleva a un encabezado de host gratuito. Entonces el * generalmente inseguro * es muy cierto. – regilero

Cuestiones relacionadas