Лучший способ ограничить доступ по IP-адресу? - PullRequest
18 голосов
/ 10 января 2009

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

Ответы [ 3 ]

16 голосов
/ 10 января 2009

Одним из способов является использование 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 для вашего веб-приложения.

8 голосов
/ 24 декабря 2010

В IIS 7 лучший способ ограничения IP - использование файла конфигурации.

Полная статья:
http://boseca.blogspot.com/2010/12/programmatically-addremove-ip-security.html

8 голосов
/ 10 января 2009

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


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

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

Запретить все
Разрешить с .domain.com

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...