Por la documentación , $_SERVER['HTTP_HOST']
se completa según el Host
encabezado enviado por el cliente. Probablemente debería comenzar a preocuparse en este punto, ya que nunca es una buena idea confiar en los datos que puede proporcionar un cliente malintencionado.
También hay SERVER_NAME
, que proporciona un resultado similar pero ligeramente diferente. Puede encontrar una buena discusión acerca de estos dos y las formas apropiadas de usarlos en esta pregunta sobre el desbordamiento de pila .
Ahora, ¿qué ataques podría realizar alguien mediante la manipulación de su nombre de host? Eso depende de tu aplicación. Tal vez esté guardando en caché una página renderizada y sirviéndola a otro usuario, y esa página se generó con Host: mymaliciousserver.com
, por lo que ahora su segundo usuario está haciendo clic en los enlaces al servidor del atacante, donde falsifican los detalles de la cuenta. Existe una gran cantidad de posibles vulnerabilidades y, en lugar de intentar solucionarlos todos, prefiero evitar el problema por completo.
De todos modos, también es un código algo cuestionable: agrega mucha complejidad para algo que no cambia a menudo. Si se trata de su propia aplicación personalizada, simplemente configure el nombre de host una vez y termine con él; si es una aplicación distribuible, haga que el cliente establezca el nombre de host una vez y que termine con él. Está agregando partes móviles y mágicas, y tienden a tener problemas de seguridad, así como a funcionar mal en entornos para los que no ha diseñado explícitamente (por ejemplo, sitios detrás de un proxy inverso, sitios alojados en un puerto no estándar, sitios que se ejecutan en un entorno de sitios múltiples, etc.).