ConfigurationBinder: конфиденциальные данные: элементы массива символов равны нулю - PullRequest
0 голосов
/ 26 марта 2020

Мои 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 вместо промежуточной строки? Время жизни строки в куче неизвестно, и это делает ее уязвимой.

...