Недостатком шифрования разделов конфигурации с использованием aspnet_regiis или эквивалентных API является то, что он шифрует целые разделы.
Хорошо с точки зрения безопасности, но администратору становится сложнее просматривать другие неконфиденциальные данные конфигурации в том же разделе. appSettings - это раздел, который администратор часто захочет просматривать.
Один из вариантов - поместить свои учетные данные в другой раздел (например, создать фиктивную строку подключения в разделе <connectionStrings>
) и зашифровать только этот раздел:
<connectionStrings>
...
<add key="AdminCredentials"
providerName=""
connectionString="Username=...;Password=..." />
</connectionStrings>
Вам, конечно, придется написать код для анализа фиктивной строки соединения (String.Split) и извлечения учетных данных. Что-то вроде следующего (для простоты опущена обработка ошибок):
string s = ConfigurationManager.ConnectionStrings["AdminCredentials"].ConnectionString;
string[] tokens = s.Split(';');
string userName = tokens[0].Split('=')[1];
string password = tokens[1].Split('=')[1];
...
Делая это, вы можете оставить раздел appSettings незашифрованным.