Ответ 1
В IIS 7 лучший способ ограничить IP - это использовать файл конфигурации.
Полная статья:
http://boseca.blogspot.com/2010/12/programmatically-addremove-ip-security.html
Для приложения ASP.NET С# нам необходимо ограничить доступ на основе IP-адреса. Каков наилучший способ сделать это?
В IIS 7 лучший способ ограничить IP - это использовать файл конфигурации.
Полная статья:
http://boseca.blogspot.com/2010/12/programmatically-addremove-ip-security.html
Один из способов заключается в использовании 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 для вашего веб-приложения.
Вот статья из Microsoft о том, как это сделать.
Настройка безопасности папки по IP-адресу или доменному имени
Apache использует директивы Allow and Deny для определения сайтов, которые могут обращаться к определенному веб-сайту или папке. Однако Apache обеспечивает дискреционное управление доступом; вы должны либо отклонить все сайты, либо предоставить определенный список сайтов или IP-адресов, которые могут получить доступ к папке или разрешить все сайты и запретить только те сайты, на которые вы не хотите иметь доступ. Например, если вы используете следующую директиву, всем клиентским компьютерам запрещается доступ, если они не признаны частью домена domain.com:
Отклонить от всех
Разрешить с .domain.com
IIS работает одинаково. Все клиенты специально лишены или имеют доступ, за исключением тех, которые перечислены.
Определить контроль доступа для конкретной папки или сайта
Если вы хотите ограничить доступ для всего сайта, выберите веб-сайт из списка разных обслуживаемых сайтов в левой панели.
Если вы хотите ограничить доступ только для определенной папки, щелкните папку, которую вы хотите контролировать.
ПРИМЕЧАНИЕ. Если вы используете ограничения имени домена, сервер должен выполнить обратный поиск DNS для каждого запроса, чтобы проверить зарегистрированное доменное имя хоста. Корпорация Майкрософт рекомендует, когда вы можете использовать IP-адрес или сетевой диапазон.