php "SERVER ['REMOTE_PORT']" правильность - PullRequest
0 голосов
/ 26 июня 2019

В коде, который я пишу с целью предоставления дополнительных данных о пользователе, у меня возникают трудности с сбором номера порта пользователя.

Я пишу на PHP.

<?php

$ip = $_SERVER['REMOTE_ADDR'];
$port = $_SERVER['REMOTE_PORT'];

?>

ХотяIP-адрес пользователя легко собирается с помощью команды: $_SERVER['REMOTE_ADDR'],

Я получаю номер порта, который не соответствует номеру порта пользователя, с помощью команды: $_SERVER['REMOTE_PORT'];

Тогда, команда $_SERVER['REMOTE_PORT'] Предполагается предоставить реальный номер порта пользователя?Или это просто случайное число возвращает?

Есть ли способ правильно собрать номер порта пользователя?

Спасибо

1 Ответ

0 голосов
/ 26 июня 2019

$ _ SERVER ['REMOTE_PORT'] - это порт, выполняющий запрос на компьютере пользователя. Это будет использоваться для маршрутизации запроса страницы к их маршрутизатору. Это может выглядеть как случайное число, но это порт, сгенерированный маршрутизатором пользователя.

$ _ SERVER ['SERVER_PORT'] - это порт на вашем веб-сервере, который получает запрос. Это будет либо 80, либо 443, в зависимости от того, использует ли пользователь https или нет.

Здесь - еще один опубликованный вопрос по Super User, который объясняет это явление браузеров, запрашивающих веб-страницу со «случайного» порта -> https://superuser.com/questions/1055281/do-web-browsers-use-different-outgoing-ports-for-different-tabs.

Кроме того, маршрутизатор между клиентом и веб-сервером может изменить порт и затем сохранить портовые соединения в NAT (таблица сетевых адресов), чтобы направить ответ обратно в браузер. -> https://superuser.com/questions/105838/how-does-router-know-where-to-forward-packet

От: CompTIA Security + Получите сертификацию Получить впереди: SY0-501 Учебное пособие - 2017 от Darril Gibson

Клиентские порты начинаются с портов 49,152 и увеличиваются до 65 535 .... ... Когда вы используете веб-браузер для запроса страницы с сайта, ваш Система запишет номер неиспользуемого клиентского порта, например 49 152, в внутренняя таблица для обработки обратного трафика. Когда веб-сервер возвращает веб-страницу, она включает порт клиента в качестве пункта назначения порт. Когда клиент получает пакеты веб-страницы с адресатом порт 49,152, он отправляет эти пакеты в приложение веб-браузера. Браузер обрабатывает пакеты и отображает страницу.

Также из руководства PHP : https://www.php.net/manual/en/reserved.variables.server.php

'SERVER_PORT' Порт на сервере, используемый веб-сервером для связи. Для установок по умолчанию это будет «80»; используя SSL, для экземпляр, изменит это на любой ваш определенный безопасный порт HTTP является.

'REMOTE_PORT' Порт, используемый на компьютере пользователя для связи с веб-сервером.

...