Вопросы C# connectionString о шифровании

Я изучаю, как зашифровать ConnectionString для нашего C# (3.5) Приложение. Я считал.Net Framwork Developer Guide (http://msdn.microsoft.com/en-us/library/89211k9b (По сравнению с 80) .aspx) об обеспечении строки подключения. но не полностью понимают содержание.

  1. Это говорит"The connection string can only be decrypted on the computer on which it was encrypted." У нас есть машина выпуска, которая создаст наше приложение, которое генерирует OurApp.exe.config и затем установит его на многих машинах продукта. Это - meam, нам нужно было разделить этот процесс шифрования с нашим приложением и выполнить его в машине отдельного продукта?

  2. Мы можем использовать"RSAProtectedConfigurationProvider". Это упомянуло, что нам нужно encryption key для того поставщика. когда и как мы должны обеспечить ключ шифрования?

спасибо,

6
задан jessegavin 20 May 2010 в 15:07
поделиться

4 ответа

Существует два метода защиты ключа (на самом деле один, но они идут в разных направлениях после первоначального отстрела инструмента).

  1. Использование DPAPI и фактического ключа машины. Это, в некотором роде, более безопасно, поскольку никто не знает ключа. Кроме того, ключ можно экспортировать, чтобы установить его на другие машины в ферме. Единственный другой выход - поддерживать отдельные строки подключения для каждого сервера в ферме. Это можно сделать, но это очень сложно. Если вы пойдете этим путем, отделите строки подключения от файла конфигурации, чтобы вы могли обновлять конфигурацию на всех серверах, но не портить строки подключения. Если подумать, это хорошая идея в любом случае.
  2. Установите индивидуальный машинный ключ (Google, так как есть генераторы, которые могут создать ключ), а затем введите его в файл конфигурации. После этого вы сможете легко обмениваться ключами.

Надеюсь, это поможет.

2
ответ дан 16 December 2019 в 21:35
поделиться

Вы только нужно один раз запустить процесс шифрования. Однако после генерации машинного ключа вам необходимо распространить его на все файлы machine.config на целевых машинах. Файл machine.config должен находиться здесь:

%FRAMEWORKDIR%\%FRAMEWORKVERSION%\CONFIG

Как: настроить MachineKey в ASP.NET 2.0 : В этой ссылке есть раздел о настройке ключа конфигурации decryptionKey = "AutoGenerate, IsolateApps" validation = "SHA1" decryption = "Auto" /> и как разделить это между машинами.

3
ответ дан 16 December 2019 в 21:35
поделиться

1) Да, если вы воспользуетесь этим подходом, вы зашифруете его для каждой машины, на которой он был установлен. Если бы у вас все равно была бы другая конфигурация для каждой машины, это был бы нормальный подход из моего опыта. Это не лучший подход, если вы пытаетесь отправить «секретную» строку подключения.

2) Если вы этого не видели, я думаю, эта статья ответит на вопрос о поставщике RSA ... http://msdn.microsoft.com/en-us/library/ff650304.aspx

Если это приложение используется клиентами, которым вам необходимо предоставить информацию о подключении, то:

СЛОВО ВНИМАНИЕ: Не думайте, что, шифруя конфигурацию, вы действительно защищаете себя от пользователя, запускающего приложение. В какой-то момент эта строка должна быть расшифрована приложением, чтобы использовать ее для подключения к серверу. Это приложение может быть использовано для обеспечения связи с другими приложениями. Короче говоря, вы не должны полагаться на это как на свою единственную стратегию, чтобы не допустить пользователей к БД. Хорошая безопасность - это всегда комплексное усилие.

2
ответ дан 16 December 2019 в 21:35
поделиться
  1. Конфиг шифруется с помощью машинного ключа. Это означает, что только компьютер с этим ключом может расшифровать его. Проще всего развернуть систему с незашифрованной конфигурацией, а затем зашифровать ее при запуске программы, или использовать отдельный процесс для шифрования конфигурации. Вы можете распространять оригинальный машинный ключ для использования на других машинах, используя ответ code4life выше

  2. Вместо того, чтобы переписывать шаг за шагом, как использовать ключ шифрования RSA, пожалуйста, посмотрите это руководство MSDN - http://msdn.microsoft.com/en-us/library/dtkwfdky.aspx

1
ответ дан 16 December 2019 в 21:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: