Подтвердить что ты не робот

Лучший способ ограничить доступ по IP-адресу?

Для приложения ASP.NET С# нам необходимо ограничить доступ на основе IP-адреса. Каков наилучший способ сделать это?

4b9b3361

Ответ 2

Один из способов заключается в использовании HttpModule.

Из ссылки (если она когда-либо уходит):

/// <summary>
/// HTTP module to restrict access by IP address
/// </summary>

public class SecurityHttpModule : IHttpModule
{
 public SecurityHttpModule() { }

    public void Init(HttpApplication context)
    {
        context.BeginRequest += new EventHandler(Application_BeginRequest);
    }

    private void Application_BeginRequest(object source, EventArgs e)
    {
        HttpContext context = ((HttpApplication)source).Context;
        string ipAddress = context.Request.UserHostAddress;
        if (!IsValidIpAddress(ipAddress))
        {
            context.Response.StatusCode = 403;  // (Forbidden)

        }
    }

    private bool IsValidIpAddress(string ipAddress)
    {
        return (ipAddress == "127.0.0.1");
    }

    public void Dispose() { /* clean up */ }
}

После создания класса HTTP-модуля вам необходимо зарегистрировать его в разделе httpModules вашего файла web.config, например:

<configuration>
    <system.web>
        <httpModules>
            <add name="SecurityHttpModule" type="SecurityHttpModule"/>
        </httpModules>
    </system.web>
</configuration>

Это добавляет модуль в конвейер запросов ASP.NET для вашего веб-приложения.

Ответ 3

Вот статья из Microsoft о том, как это сделать.


Настройка безопасности папки по IP-адресу или доменному имени

Apache использует директивы Allow and Deny для определения сайтов, которые могут обращаться к определенному веб-сайту или папке. Однако Apache обеспечивает дискреционное управление доступом; вы должны либо отклонить все сайты, либо предоставить определенный список сайтов или IP-адресов, которые могут получить доступ к папке или разрешить все сайты и запретить только те сайты, на которые вы не хотите иметь доступ. Например, если вы используете следующую директиву, всем клиентским компьютерам запрещается доступ, если они не признаны частью домена domain.com:

Отклонить от всех
Разрешить с .domain.com

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

Определить контроль доступа для конкретной папки или сайта

  • Войдите на компьютер веб-сервера в качестве администратора.
  • Нажмите "Пуск", выберите "Настройка", а затем "Панель управления".
  • Дважды щелкните значок "Администрирование", а затем дважды щелкните "Менеджер служб Интернета".
  • Если вы хотите ограничить доступ для всего сайта, выберите веб-сайт из списка разных обслуживаемых сайтов в левой панели.

  • Если вы хотите ограничить доступ только для определенной папки, щелкните папку, которую вы хотите контролировать.

  • Щелкните правой кнопкой мыши веб-сайт или папку и выберите "Свойства".
  • Нажмите панель "Безопасность каталога".
  • Если вы хотите ограничить доступ к определенному набору сайтов, но запретите доступ ко всем другим сайтам, нажмите "Запрещенный доступ".
  • Если вы хотите предоставить доступ ко всем клиентам по умолчанию, но исключить конкретный список клиентов, нажмите "Разрешенный доступ".
  • Чтобы обновить список хостов или доменов в списке "Исключить", нажмите "Добавить".
  • Чтобы добавить в список один компьютер, выберите "Один компьютер", введите IP-адрес в соответствующем поле и нажмите "ОК" .
  • Чтобы добавить диапазон компьютеров в определенном диапазоне адресов, нажмите "Группа компьютеров", введите IP-адрес для сети в соответствующем поле, введите маску подсети для сетевого диапазона, который вы хотите настроить, и нажмите "ОК" .
  • Чтобы добавить компьютеры по их идентифицированному доменному имени, нажмите "Имя домена", а затем введите имя домена в соответствующем поле.
  • Нажмите "Свойства", введите имя домена и нажмите "ОК" .
  • Нажмите "ОК" , а затем "ОК" .

ПРИМЕЧАНИЕ. Если вы используете ограничения имени домена, сервер должен выполнить обратный поиск DNS для каждого запроса, чтобы проверить зарегистрированное доменное имя хоста. Корпорация Майкрософт рекомендует, когда вы можете использовать IP-адрес или сетевой диапазон.