TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.74K subscribers
Post #602 1.16K
День четыреста девяносто восьмой. #ЗаметкиНаПолях
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" 
"Server=server;Database=MyDB;User ID=user;Password=password"

Теперь, несмотря на то, что в самом файле appsettings.json значение не указано, оно будет использоваться в проекте из секретного хранилища.

Источник: https://levelup.gitconnected.com/never-store-secrets-in-appsettings-json-3a7404ea50d0
More from @netdeveloperdiary
  1. Sep 26, 2026День 2796. #ЗаметкиНаПолях #AI Рабочий процесс с Copilot для .NET. Продолжение Начало Три…
  2. Sep 25, 2026День 2795. #ЗаметкиНаПолях #AI Рабочий процесс с Copilot для .NET. Начало Проблема с позиц…
  3. Sep 24, 2026День 2794. #Оффтоп #Здоровье Сегодня будет необычный пост. Завтра в Москве стартует конфер…
  4. Sep 23, 2026День 2793. #ЗаметкиНаПолях #SQL 10 Редких Возможностей SQL, Которые Стоит Знать Каждому. Ч…
  5. Sep 22, 2026День 2792. #ЗаметкиНаПолях #SQL 10 Редких Возможностей SQL, Которые Стоит Знать Каждому. Ч…
  6. Sep 21, 2026🔍Тестовое собеседование с Senior C# разработчиком уже завтра 22 сентября(уже завтра!) в 1…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →