2012-07-09 22 views
5

¿Se puede falsificar o falsificar la variable PHP $ _SERVER ['SERVER_NAME']? Estaba planeando usar eso como una medida de seguridad para la publicación de formularios. Verificaría que esa variable sea el nombre de mi sitio (www.example.com). Sé que HTTP_REFERRER puede ser falso, pero no estaba seguro de este.

Gracias!

+1

No importa lo que siempre será lo mismo ... su servidor. No es el servidor del que proviene la solicitud. – sachleen

Respuesta

2

No se puede fingir, persay, pero siempre devolver el nombre de su sitio. Es útil si está ejecutando varios sitios fuera del mismo script y, por ejemplo, utiliza una base de datos diferente según el nombre de host proporcionado.

El PHP documentation dice:

'SERVER_NAME' 
    The name of the server host under which the current script is executing. If the script is running on a virtual host, this will be the value defined for that virtual host. 
+3

Está confundiendo 'SERVER_NAME' con' HTTP_HOST'. – BalusC

3

Por un visitante, normalmente no se puede fingir. Pero sospecho que querrás aplicar cierto SERVER_NAME para licenciar scripts, de modo que solo puedan ser utilizados por dominios particulares. En este caso la respuesta es sí, esta variable definitivamente puede ser falsificada.

La razón es simple, el servidor establece este valor. En la mayoría de los casos, tendría PHP ejecutándose como un módulo Apache, pero a veces tiene otros módulos Apache, algunas veces tiene PHP ejecutándose en modo CGI con NGINX o IIS, a veces incluso tiene PHP ejecutándose como CLI bifurcado como un proceso secundario por un sistema personalizado servidor incorporado implementado en una nube. Esos servidores serían responsables de establecer esa variable.

Además, siempre hay una asignación manual.

$_SERVER['SERVER_NAME'] = ... // this can go above all your scripts 
Cuestiones relacionadas