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.
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();
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");
}
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