Я считаю, что использование функции «защищенных разделов» в App.Config или Web.Config МЕНЬШЕ безопаснее, чем сохранение пароля в вашем коде.
Любой, имеющий доступ к серверу, может расшифровать этот раздел конфигурации так же быстро, как вы его зашифровали, выполнив команду расшифровки, описанную в статье, которую все продолжают цитировать:
aspnet_regiis -pd "connectionStrings" -app "/SampleApplication"
https://msdn.microsoft.com/en-us/library/zhhddkxy.aspx#Anchor_1
Таким образом, эта функция ASP.Net добавляет безопасность только в том случае, если хакер каким-то образом имел доступ к вашему web.config, но не ко всему вашему серверу (произошло в 2010 как @ djteller упоминается в комментарии к атаке оракула).Но если у них есть доступ к серверу, вы получаете один вызов cmd .Им даже не нужно устанавливать ildasm.exe.
Однако сохранение реальных паролей в вашем коде - кошмар обслуживания.Итак, одна вещь, которую я видел, это сохранение зашифрованного пароля в вашем файле web.config и сохранение ключа шифрования в вашем коде.Это позволяет скрыть пароли от случайного просмотра, сохраняя при этом поддержку.
В этом случае хакер должен как минимум декомпилировать ваш код, найти ключ и выяснить, какой алгоритм шифрования вы используете.Не невозможно, но, конечно, сложнее, чем запустить aspnet_regiis -pd ....
Тем временем я также ищу лучшие ответы на этот шестилетний вопрос ...