Не важно где хранятся зашифрованные данные, важно, как они зашифрованы.
Зашифрованные разделы в файле web.config обычно шифруются с помощью API защиты данных , который чрезвычайно трудно взломать без ущерба для всей машины. Вы также можете использовать контейнер с ключом RSA, который похож (сложно достать его из машины).
Если вы хотите сохранить зашифрованную строку в DLL, я думаю, это нормально, хотя она по своей природе не более безопасна, чем зашифрованная web.config (любой может заглянуть в эту DLL с Reflector ), и ее, очевидно, сложнее изменить (вы надо перекомпилировать). Но опять же, гораздо важнее то, как была сгенерирована эта зашифрованная строка; предположительно, вы не используете тех же провайдеров, что и для зашифрованного web.config, так что вы используете?
Схема шифрования является такой же надежной, как закрытый ключ или общий секрет. Если этот ключ также хранится в вашей сборке, то у вас может вообще не быть шифрования. Если он хранится в какой-либо внешней базе данных, то возникает вопрос о том , как защищена строка подключения этой базы данных. Это может привести к снижению безопасности в целом.
С другой стороны, если вы были поставщиком услуг, и строка подключения была зашифрована пользователем паролем , то это было бы более безопасно, чем использование статического машинного ключа. С другой стороны, если вы используете пользовательские пароли для шифрования, очень маловероятно, что вы жестко закодируете зашифрованные данные в вашей сборке, поскольку их нужно генерировать и хранить в ответ на действия пользователя (не разработчика).
На самом деле я не могу вспомнить слишком много ситуаций, когда жесткое кодирование (зашифрованной) строки подключения в DLL более безопасно, чем шифрование соответствующего раздела web.config. В лучшем случае это просто добавляет неудобств, в худшем - полагается на какую-то неуклюжую пользовательскую защиту, пронизанную дырами. Сделайте себе одолжение и сделайте то, что рекомендует Microsoft - просто зашифруйте ваш web.config, если там есть конфиденциальные данные.