Что я хотел бы знать, так это конкретный подход к шифрованию строк подключения в файле конфигурации. Вот мои вопросы:
Используя шифрование на уровне машины, не может ли кто-нибудь, имеющий доступ к моему серверу, написать небольшую программу .Net для чтения содержимого строк подключения?
Если я развертываю свое приложение на пользовательских машинах в корпоративной среде и у приложения есть строки подключения в файле конфигурации, как я могу убедиться, что только мое приложение может его расшифровать? Этот сценарий особенно интересен в сценарии развертывания ClickOnce. Я читал о людях, которые хранят конфигурацию в незашифрованном виде на сервере издателя и шифруют на уровне компьютера, когда приложение загружается, устанавливается и запускается в первый раз. Для меня это звучит так неправильно - строки подключения беззащитно передвигаются по сети и остаются незащищенными в течение короткого промежутка времени между загрузкой и выполнением приложения.
Могу ли я иметь открытый и закрытый ключи, подписывать свое приложение, зашифровать файл конфигурации с помощью ключа, и когда пользователь выполнит его, дешифрование будет возможно только из подписанного приложения?
Поскольку я использую ClickOnce, я мог бы иметь зашифрованную конфиденциальную информацию в коде или встроить, потому что ClickOnce не обнаружит изменения, если не изменится версия #. Итак, если мне нужно перекомпилировать, если я изменю строку подключения, точка app.config будет отключена. Какие еще подходы я могу предпринять, не используя файл конфигурации, для защиты строк подключения на сервере, клиенте и между ними?