2011-01-14 2 views
1

my php script имеет $ _SERVER ['HTTP_HOST'] равен ip, который не имеет никакого отношения к ip-адресу моего сервера.

У кого-то есть легкое объяснение?

(я думал, некоторые боты посылают укомплектовать неверный заголовок хоста, но я не думаю, что он может подключиться к серверу с заголовком неверного хоста = /)

ТНХОМ

+0

И что такое IP? – BoltClock

+0

Является ли это виртуальным сервером или размещенной средой? Если это так, то IP-адреса, скорее всего, не совпадут. – SRM

+1

Обычная библиотека HTTP не будет. Но бот действительно может открыть соединение сокета с вашим сервером и включить поддельный заголовок «Host: 87.31.159.22». – mario

ответ

9

HTTP_HOST предоставляется клиентом в части запроса HTTP-запроса Host:. Его можно изменить произвольно, хотя я не могу понять, почему это нужно. См. the manual page.

Используйте вместо этого $_SERVER['SERVER_NAME']. Это определяется самим сервером.

+0

Что касается причин, я получаю хиты с HOST * localhost * и моими * поддоменами *. Хакеры ищут условия, основанные на хосте сервера, чтобы получить доступ к несанкционированному контенту. – Kareem

3

Host заголовка не имеет абсолютно никакого отношения к подключению к веб-серверу. Он используется веб-сервером, когда он подключен, для маршрутизации HTTP-ответа на конкретный виртуальный хост. Возможно, виртуальный хост, в котором находится ваш скрипт, является виртуальным хостом по умолчанию, и в этом случае HTTP-диалог будет перенаправлен на него, если он не соответствует другим виртуальным хостам.

+0

Именно то, что я получал, когда я спросил, находится ли он в размещенной среде или использует VPS. HTTP_HOST всегда отличается от IP в этом случае (по крайней мере, на 3 учетных счетах хостинга, которые у меня есть). – SRM

Смежные вопросы