IPFiltering ASP网络核心

时间:2018-09-16 23:03:27

标签: security asp.net-web-api nuget

我正在使用以下nuget包:https://github.com/msmolka/ZNetCS.AspNetCore.IPFiltering

我正在使用它来阻止试图强行验证我的应用程序身份的IP。 黑名单是在appsetting.json中定义的,我不知道如何在运行时动态地对其进行修改,例如,添加具有错误密码的IP。

我的实际操作方式不起作用,因为即使IP已正确保存在conf中,我仍然可以连接...

Startup.cs

namespace Sondage
{
public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {

        services.AddIPFiltering(this.Configuration.GetSection("IPFiltering"));
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseHsts();
        }
        app.UseIPFiltering();
        app.UseHttpsRedirection();
        app.UseMvc();
    }
}

}

appsettings.json

{
    "Logging": {
       "LogLevel": {
          "Default": "Warning"
        } 
     },
     "AllowedHosts": "*",

     "IPFiltering": {
     "DefaultBlockLevel": "None",
     "HttpStatusCode": 404,
     "Blacklist": [],
     "IgnoredPaths": [ "GET:/ignoreget", "*:/ignore" ]
 }

}

我的控制器的一部分:

[Route("api/authenticate")]
[ApiController]
public class authenticationController : ControllerBase
{

    private IConfiguration _configuration;

    public authenticationController(IConfiguration Configuration)
    {
        _configuration = Configuration;
    }

    [HttpPost]
    public string authent(string value)
    {
        Dictionary<string, string> result = new Dictionary<string, string>();
        IPAddress ip_addr = HttpContext.Connection.RemoteIpAddress;

        if(!Globals.tryByIP.TryGetValue(ip_addr, out int numberOfTry)) {
            Globals.tryByIP.Add(ip_addr, 0);
        } else
        {
            if(numberOfTry>=0)
            {
                Console.WriteLine("-----");
                _configuration.GetSection("IPFiltering")["Blacklist"] = ip_addr.ToString();
                Console.WriteLine(_configuration.GetSection("IPFiltering")["Blacklist"]);
            }
        }

1 个答案:

答案 0 :(得分:0)

请确保还使用IPAddressRange软件包。

最近我在使用此nuget软件包时也遇到了问题,起初我忘记添加ipaddress解析器。