Dotnet User-Secrets
Посмотрите на этот код файла
appsettings.json. Видите что-нибудь необычное?{
"ConnectionStrings": {
"default": "Server=server;Database=MyDB;User ID=user;Password=password"
},
"Logging": {
"LogLevel": {
"Default": "Warning"
}
}
}
Третья строка содержит секретную информацию, которую вы бы не хотели отправлять в открытый репозиторий кода. Но такой пример описан во многих книгах и руководствах по ASP.NET Core. Понятно, почему так происходит – это просто. Тем не менее, это огромная дыра в безопасности. Никогда не храните конфиденциальные данные в исходном коде.Более опытный разработчик, вероятно, добавит файл
appsettings.Development.json, но ещё лучше будет включить его в .gitignore. К счастью, эту проблему легко исправить. Не нужно делать дополнительных файлов
appsettings.SomeEnvironment.json. Вместо этого просто используйте appsettings.json по умолчанию в качестве шаблона для того, что требуется для работы приложения.Используйте
dotnet user-secrets для безопасного хранения конфиденциальных данных. Уберём данные строки подключения из открытого доступа:"ConnectionStrings": {
"default": ""
}
Теперь нужно определить место хранения конфиденциальной информации пользователя с помощью командыdotnet user-secrets initЕё нужно выполнить из папки проекта. В результате появится строка:
Set UserSecretsId to '…' for MSBuild project <путь_к_проекту>А в файл
.csproj добавится блок<UserSecretsId>…</UserSecretsId>После этого можно добавлять значения конфиденциальных данных с помощью команды:
dotnet user-secrets setПервым параметром будет путь к элементу файла конфигурации с разделителями двоеточиями, а вторым параметром – значение. Например, для строки подключения выше команда будет выглядеть так:
dotnet user-secrets set "ConnectionStrings:default"Теперь, несмотря на то, что в самом файле appsettings.json значение не указано, оно будет использоваться в проекте из секретного хранилища.
"Server=server;Database=MyDB;User ID=user;Password=password"
Источник: https://levelup.gitconnected.com/never-store-secrets-in-appsettings-json-3a7404ea50d0