Я использую следующий HttpModule, чтобы остановить пару IP-адресов, которые постоянно пытаются спамить мою контактную форму.Я не получаю спам, поскольку они вызывают System.Web.HttpRequestValidationException, но я получаю отчет об исключении в своем почтовом ящике.Это не так раздражает, но почти.
В конечном итоге я хочу протестировать либо список IP-адресов из базы данных, либо, возможно, реализовать API-интерфейс HttpBL для тестирования известных IP-адресов из черного списка, но выполнение этого при каждом запросе представляется излишним,В любом случае я делаю это, будь то использование IP-адресов в базе данных или отправка запросов во внешний черный список при каждом запросе страницы, безусловно, кажется ненужным.Можете ли вы указать мне направление проверки один раз, и если IP проходит тест в первый раз, чтобы прекратить проверку?
using System;
using System.Web;
namespace DomainModel.Services
{
public class BlockIPModule : IHttpModule
{
public void Dispose() {}
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(Application_BeginRequest);
}
private void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext context = ((HttpApplication)sender).Context;
string currentIP = context.Request.UserHostAddress;
if (!IsIpValid(currentIP))
{
context.Response.StatusCode = 403;
}
}
private bool IsIpValid(string checkIP)
{
return (checkIP != "213.5.70.205" && checkIP != "188.92.75.82");
}
}
}
обновленный код удален - ужасная идея.