Поддельный ответ REQUEST_URI
В лог-файле веб-сервера я заметил, что некоторые ребята действительно проверяют наличие некоторых страниц на моем сервере (и, возможно, на другом сервере).
Поэтому я настроил собственный сайт 404 и зачитал, кто эти посетители. Что-то вроде
ErrorDocument 404 /404.php
и я получаю что-то вроде этого:
GATEWAY_INTERFACE CGI/1.1
SERVER_ADDR 62.75.xxx.xxx (my servers IP)
SERVER_NAME vps28680.vps.ovh.ca
SERVER_SOFTWARE Apache/2.2.22 (Debian)
SERVER_PROTOCOL HTTP/1.1
REQUEST_METHOD GET
REQUEST_TIME 1465225786
REQUEST_TIME_FLOAT 1465225786.731
DOCUMENT_ROOT /var/www
HTTP_HOST vps28680.vps.ovh.ca
HTTP_USER_AGENT Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0
REMOTE_ADDR 167.114.3.44
REMOTE_PORT 44685
SCRIPT_FILENAME /var/www/404.php
SERVER_PORT 80
SERVER_SIGNATURE Apache/2.2.22 (Debian) Server at vps28680.vps.ovh.ca Port 80
SCRIPT_NAME /404.php
REQUEST_URI HTTP://vps28680.vps.ovh.ca/judge/judge.php
В нормальном мире имя SERVER_NAME должно быть частью REQUEST_URI и должно преобразовываться в REMOTE_ADDR.
как в этом случае:
$_SERVER(REQUEST_URI) = "HTTP://vps28680.vps.ovh.ca/judge/judge.php"
$_SERVER(SERVER_NAME) = "vps28680.vps.ovh.ca"
and
$_SERVER(SERVER_NAME) = "167.114.3.44"
Я сделал 'dig vps28680.vps.ovh.ca', и это оказалось 167.114.3.44 .
Хорошо, пока все хорошо, но проблема в том, что ни IP, ни URI не находятся на моем сервере.
$_SERVER(REQUEST_URI) в соответствии с документацией URI, который посетитель ввел в своем браузере Firefox и приземлился на моем сервере. И именно сразу после его посещения я нажал на ссылку, и она не привела меня к моей коробке.
Итак, я подумал, что возможно, что кто-то настроит сервер имен, чтобы он указывал на мой ящик с этим доменом, но как он мог сделать это с поддельным IP? Так почему он приземлился на мою коробку?
Afaik HOST_NAME должен был показывать имя моего домена, а не его домен. Или, возможно, это не его IP и его домен.
Может кто-нибудь объяснить мне, что происходит?
1 ответ
Вы можете указать любое имя хоста в заголовке HTTP HOST, и если с этим именем не определен vhost, веб-серверы обычно будут обслуживать его с сервером по умолчанию, который, как правило, является только первым определенным (это особенность HTTP/1.1 и позволяет обслуживать несколько доменов только с одним IP-адресом).
Итак, что происходит, что кто-то на 167.114.x.x
(скорее всего зараженный ботом) сканирует веб-хосты с какой-либо целью и просто указывает свое имя в HTTP-запросе. Таким образом, они могут просто перебирать IP-адреса и им не нужны действительные имена хостов.
Другими словами: здесь нечего видеть, просто обычный день в Интернете.