Хобрук: Ваш путь к мастерству в программировании

Как получить IP-адрес входящего запроса с помощью .net Core

Я развернул свое решение .NET CORE в среде AZURE (PAAS). Я использовал следующий фрагмент кода, чтобы получить IP-адрес клиента.

 dtoItem.LogIP = HttpContext.Connection.RemoteIpAddress.ToString();

Я использовал стандартные библиотеки ядра .net и внес необходимые изменения в Startup.cs.

app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto,
    RequireHeaderSymmetry = false,
});

Я считаю, что реализовал все правильно. Но до сих пор у меня нет точного IP-адреса клиента. Я всегда получаю общедоступный IP-адрес клиента вместо его частного IP-адреса. Поскольку это можно повторить (пользователи одного и того же офиса 2 имеют одинаковый общедоступный IP-адрес), мне нужен частный IP-адрес клиента вместо его общедоступного IP-адреса.

Можно ли получить частный IP-адрес в решении PAAS. Если это невозможно, есть ли способ отслеживать информацию о ПК клиента. (например, IP-адрес, MAC-адрес).


  • Я не думаю, что это возможно. Вы видели это: stackoverflow.com/a/8756278/1033684 26.06.2017
  • можете ли вы объяснить, что вы подразумеваете под общедоступным\частным IP-адресом клиента? Если клиент «спрятан» за NAT\маршрутизатором, то запросы будут выдаваться этим маршрутизатором, и вы мало что можете сделать на сервере, чтобы обнаружить внутренний «скрытый» IP. Одна вещь, которую вы можете сделать, это заставить вашу клиентскую сторону извлечь эту информацию из клиентского устройства и отправить ее вместе с запросом, но тогда вам придется контролировать клиента, поэтому он не будет работать с глупыми HTTP-запросами. 26.06.2017
  • Этот вопрос больше относится к основному вопросу .net, чем к вопросу о размещении в службе приложений Azure. Не уверен, что вы пытаетесь решить здесь, но если вы хотите получить IP-адрес компьютера за NAT, вы не сможете сделать это с кодом на стороне сервера, а вам понадобится какой-нибудь java-скрипт, который работает на клиенте, чтобы получить эти данные, а затем либо прикрепить их к исходящим запросам, либо опубликовать обратно на свой сайт. 27.06.2017
  • Спасибо, ребята, за ваши предложения. @itaysk - пожалуйста, обратитесь к этой статье. В ней объясняются различия между общедоступными и частными IP-адресами. ссылка. Я думаю, что извлечение IP-адреса через javascript было бы хорошим решением. У вас есть надежный JS для извлечения IP-адреса клиента? Байрон Тардиф 27.06.2017

Ответы:


1

На это нет прямого ответа. В теме, которой поделился Роб, есть несколько замечательных идей. Однако нужно понимать, что многое может произойти с запросом до того, как он достигнет сервера. Промежуточные сетевые устройства могут манипулировать заголовками TCP, поэтому они могут не отражать правильный IP-адрес, который вам нужен.

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

26.06.2017

2

Можно ли получить частный IP-адрес в решении PAAS?

Нет, это невозможно, как указано в этом сообщение SO и этот ответить на это о MACAddress

На javascript на стороне клиента нет API, доступного для получения IP-адреса (очевидно, из соображений безопасности). Затем вы можете получить IP-адрес на стороне сервера, но обычно, если вы выходите в Интернет из своей компании, он будет проходить через корпоративный прокси и IP-адрес, видимый сервером, никогда не будет фактическим IP-адресом клиента, а будет адресом прокси-сервера. Таким образом, это ограничено на стороне сервера, поскольку сервер видит только прокси (общедоступный IP-адрес).

Если это невозможно, есть ли способ отслеживать информацию о ПК клиента. (например, IP-адрес, MAC-адрес)?

Что вы можете надежно отследить, так это пользовательский агент. Разбив пользовательский агент, мы получаем некоторая информация о браузере, версиях ОС. Но пользовательский агент можно легко подделать с помощью расширения для браузера.

Если вы ищете отпечатки пальцев браузера или отслеживание, взгляните на Panopticlick, где представлена ​​дополнительная информация, например о шрифтах. > Установлено, разрешение экрана, установлены плагины и т. д. для отслеживания любого клиента. fingerprintjs2 библиотека javascript помогает отслеживать по 26 параметрам на сегодняшний день

27.06.2017
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..