Мои appsettings. Файл json содержит, помимо прочего, пароль. Если я загружаю его в строковое свойство, оно помещается в кучу, поэтому Fortify жалуется на возможность проверки кучи. Поэтому я пытаюсь загрузить значение в char [], чтобы оно было в стеке, но с этим кодом ...
char[] key = new char[1000];
key = (char[]) config.GetSection("Settings").GetValue(pwd.GetType(), "SecretKey");
все символы ключа равны нулю. Это ничем не отличается, даже если я использую Bind:
var settings = new Settings();
config.GetSection("Settings").Bind(settings);
, где класс настроек такой:
public sealed class Settings
{
public char[] SecretKey { get; set; }
public Settings()
{
SecretKey = new char[1000];
}
}
Мое окружение: C#,. Net Core 2.2
Примечание. Меня не беспокоит хранение ключа в незашифрованном виде в файле appsettings, поскольку этот файл сам по себе развертывается как Docker Secret в контейнере docker.
Я готов переключиться с appsettings на переменную окружения. Тем не менее, как мне прочитать env var непосредственно в массив char вместо промежуточной строки? Время жизни строки в куче неизвестно, и это делает ее уязвимой.