IPFiltering Asp Net Core - PullRequest
       21

IPFiltering Asp Net Core

0 голосов
/ 17 сентября 2018

Я использую следующий пакет nuget: https://github.com/msmolka/ZNetCS.AspNetCore.IPFiltering

Я использую его для блокировки IP-адресов, которые пытаются подделать аутентификацию моего приложения. Черный список определен в appsetting.json, и я не знаю, как динамически изменить его во время выполнения, например, добавить IP-адрес с неверным паролем.

То, что я на самом деле делаю, не работает, так как я все еще могу подключиться, даже если IP-адрес правильно сохранен в конфигурации ...

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 голосов
/ 02 октября 2018

Обязательно используйте пакет IPAddressRange .

У меня недавно были проблемы с этим пакетом nuget, и сначала я забыл добавить парсер ipaddress.

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