Как отладить заголовки запроса? - PullRequest
0 голосов
/ 24 января 2019

Сервер Apache, работающий за прокси-сервером / балансировщиком нагрузки. Я не хочу получать доступ к IP-адресу клиента с помощью X-Forwarded-For, но не могу его найти.

Я могу подтвердить, что mod_remoteip загружен и настроен.

[root~]# httpd -DDUMP_CONFIG | grep 'Forwarded'
RemoteIPHeader X-Forwarded-For
[root~]# httpd -M | grep remote
remoteip_module (shared)

PHP $ _ SERVER global

[USER] => apache
[HOME] => /usr/share/httpd
[FCGI_ROLE] => RESPONDER
[UNIQUE_ID] => XEmuZocZaMSZxKpDrFwvfgAAAAA
[HTTP_HOST] => domain.com
[HTTP_CONNECTION] => keep-alive
[HTTP_UPGRADE_INSECURE_REQUESTS] => 1
[HTTP_USER_AGENT] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 OPR/57.0.3098.116
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/.*;q=0.8
[HTTP_ACCEPT_ENCODING] => gzip, deflate, br
[HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.9
[PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
[SERVER_SIGNATURE] => 
[SERVER_SOFTWARE] => Apache
[SERVER_NAME] => domain.com
[SERVER_ADDR] => 192.168.98.25
[SERVER_PORT] => 80
[REMOTE_ADDR] => 192.168.99.148
[DOCUMENT_ROOT] => /var/www/html
[REQUEST_SCHEME] => http
[CONTEXT_PREFIX] => 
[CONTEXT_DOCUMENT_ROOT] => /var/www/html
[SERVER_ADMIN] => root@localhost
[SCRIPT_FILENAME] => /var/www/html/test.php
[REMOTE_PORT] => 11255
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] => 
[REQUEST_URI] => /test.php
[SCRIPT_NAME] => /test.php
[PHP_SELF] => /test.php
[REQUEST_TIME_FLOAT] => 1548332646.3819
[REQUEST_TIME] => 1548332646

Мой вопрос: как я могу подтвердить, что прокси-сервер не перенаправляет IP-адрес клиента в заголовок запроса? Должен ли он быть в $ _SERVER global? Если нет, то как можно регистрировать все заголовки запросов, включая настраиваемые заголовки?

1 Ответ

0 голосов
/ 24 января 2019

В PHP вы можете получить заголовки запроса в виде массива apache_request_headers().

Ходят слухи, эта функция не гарантирует возвращение всех заголовков.Однако я не мог проверить это, найдя пропущенный заголовок, но мог представить, что искаженные строки не могут рассматриваться как заголовки.

К сожалению, нет доступа к полному необработанному запросу в PHP.Возможно, вы захотите сделать это, используя некоторый язык сценариев CGI, например Perl, который обеспечивает доступ к необработанному запросу.

...