Bezpieczeństwo usług sieciowych .NET Core (marzec 2021)

Seria pytań uczestników, które pojawiły się podczas szkolenia Bezpieczeństwo usług sieciowych .NET Core realizowanego w dniach 29-30.03.2021 r.


W jaki sposób przechowywać secrets w Docker?

Rekomenduję wykorzystanie standardowego interfejsu IConfiguration i podpięcie dodatkowego providera dla sekretów dockera.

Można w tym użyć paczki:



 Mcrio.Configuration.Provider.Docker.Secrets

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration(configBuilder =>
                {
                    configBuilder.AddDockerSecrets();

                    // allow command line arguments to override docker secrets
                    if (args != null)
                    {
                        configBuilder.AddCommandLine(args);
                    }
                })
                .UseStartup();

 

W jaki sposób przechowywać tokeny CSRF aby zachować ciągłość działania aplikacji webowej po restarcie?

Polecam przechowywanie tokenów w bazy danych REDIS.

Jest gotowa paczka do integracji z aplikacją .NET Core:



Microsoft.AspNetCore.DataProtection.StackExchangeRedis

public void ConfigureServices(IServiceCollection services)
{
    var redis = ConnectionMultiplexer.Connect("");
    services.AddDataProtection()
        .PersistKeysToStackExchangeRedis(redis, "DataProtection-Keys");
}
 

Czy MongoDb jest podatny na ataki w stylu Sql Injection?

Tak.

Załóżmy, że przesyłamy parametry logowania w url'u:
https://example.org/login?user=patrick&password=1234

W parametrze, zamiast hasła możemy przesłać polecenie mongo:
https://example.org/login?user=patrick&password[%24ne]=

Polecam się zapoznać z dokumentem NOSQL INJECTION - FUN WITH OBJECTS AND ARRAYS