Community Server の古いバージョンを実行していたドメインを引き継ぎました。言うまでもなく、ボットは穴を見つけようとして私にスパムを送信しています。
System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
が起動される前に、IP ブロック全体をブロックしたいと思います。私IHttpModule
が試したことがありますが、HealthMonitoring が例外をキャッチしているため、後で呼び出されると思います。モジュールは次のとおりです。
public class IpBlockerModule : IHttpModule
{
private static readonly string[] Hacks = new[]
{
"60.169.73.",
"60.169.75.",
"61.160.232.",
"61.160.207.",
"92.85.161."
};
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.BeginRequest += (Application_BeginRequest);
}
private void Application_BeginRequest(object source, EventArgs e)
{
var context = ((HttpApplication) source).Context;
var ipAddress = context.Request.UserHostAddress;
if (!IsHackIpAddress(ipAddress))
{
context.Response.StatusCode = 403; // (Forbidden)
}
}
private static bool IsHackIpAddress(string ip)
{
if (ip == null) return true;
return Hacks.Any(x => x.StartsWith(ip));
}
}
関連する web.config セクション:
<system.web>
<httpModules>
<add name="IpBlockerModule" type="MyNameSpace.IpBlockerModule" />
</httpModules>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" >
<add name="IpBlockerModule" type="MyNameSpace.IpBlockerModule" preCondition="" />
</modules>
</system.webServer>
この背後にある理由は、私の受信トレイがすべての
A potentially dangerous Request.Path value was detected from the
client
と
A potentially dangerous Request.Form value was detected from the client
通知。私のモジュールに何か問題がありますか、それともモジュールが事後まで起動されないと仮定するのは正しいですか?