Надежно обнаруживает, является ли WebRequest из локального туннеля с облаком, а не непосредственно локальнымC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Надежно обнаруживает, является ли WebRequest из локального туннеля с облаком, а не непосредственно локальным

Сообщение Anonymous »

У меня есть веб -приложение, которое может быть установлено в нескольких средах, в том числе на серверах, где оно может быть обнаружено через туннель с облаком. Я получаю исправленное значение ISLOCAL.internal class RequestSecurity
{
const string PROXY_CLOUDFLARE = "cloudflare";
const string PROXY_UNKNOWN = "proxy";
const string INTERNAL_LOCALHOST_IP = "::1";

private HttpRequest _request;
public string BaseIP { get => _request.UserHostAddress; }
public string ForwardedIP { get; internal set; }
public string ProxyType { get; internal set; }

public bool IsLocal { get => _request.IsLocal && ProxyType is null; }
public bool IsCloudFlared { get => ProxyType == PROXY_CLOUDFLARE && BaseIP == INTERNAL_LOCALHOST_IP; }
< /code>
} < /p>
public RequestSecurity(HttpRequest request)
{
_request = request;

// Check for Proxies.
var fromCloudFlare = request.Headers["cf-connecting-ip"];
var fromMiscProxy = request.Headers["x-forwarded-for"];
ProxyType =
!String.IsNullOrEmpty(fromCloudFlare) ? PROXY_CLOUDFLARE
: !String.IsNullOrEmpty(fromMiscProxy) ? PROXY_UNKNOWN
: null;
// Cloudflare is the outermost proxy, most likely closest to the client.
ForwardedIP = fromCloudFlare ?? fromMiscProxy;
}
}
< /code>
для использования класса просто вызовите следующим образом ... < /p>
if ((new RequestSecurity(Request)).IsLocal)
.. do local stuff ..

var requestSecurity = new RequestSecurity(_request);
if (requestSecurity.IsLocal)
.. do local stuff ..


Подробнее здесь: https://stackoverflow.com/questions/795 ... opposed-to
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Open3d вычисляет расстояние между сеткой и облаком точек
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Динамическое создание ssh-туннеля от сервера докеров к удаленному серверу
    Гость » » в форуме Php
    0 Ответы
    71 Просмотры
    Последнее сообщение Гость
  • Невозможно подключиться к базе данных Oracle 19c с помощью SSH-туннеля с использованием Python
    Anonymous » » в форуме Python
    0 Ответы
    64 Просмотры
    Последнее сообщение Anonymous
  • Python, переадресация туннеля SSH с ключом CA
    Anonymous » » в форуме Python
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Python, переадресация туннеля SSH с ключом CA
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»