C # connectionString вопросы шифрования - PullRequest
6 голосов
/ 20 мая 2010

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

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

  2. Мы можем использовать «RSAProtectedConfigurationProvider». Он упомянул, что нам нужен encryption key для этого провайдера. когда и как мы должны предоставить ключ шифрования?

спасибо,

Ответы [ 4 ]

3 голосов
/ 20 мая 2010

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

%FRAMEWORKDIR%\%FRAMEWORKVERSION%\CONFIG

Как: настроить MachineKey в ASP.NET 2.0 : Эта ссылка содержит раздел о настройке ключа конфигурации <machineKey validationKey="[generated value here]"<br> decryptionKey="AutoGenerate,IsolateApps" validation="SHA1" decryption="Auto" /> и о том, как его использовать на компьютерах.

2 голосов
/ 20 мая 2010

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

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

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

2 голосов
/ 20 мая 2010

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

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

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

WORD OF CAUTION: не думайте, что, шифруя конфигурацию, вы действительно защищаете себя от пользователя, запускающего приложение. В какой-то момент эта строка должна быть расшифрована приложением, которое будет использоваться для подключения к серверу. Это приложение может быть использовано для предоставления этого соединения другим приложениям. Короче говоря, вы не должны полагаться на это как на единственную стратегию, позволяющую не пускать пользователей в БД. Хорошая безопасность - это всегда многостороннее усилие.

1 голос
/ 20 мая 2010
  1. Конфигурация зашифрована с использованием ключа машины. Это означает, что только компьютер с таким ключом может расшифровать его. Самое простое - развернуть его с незашифрованным конфигом, а затем зашифровать его при запуске программного обеспечения или использовать отдельный процесс для шифрования конфига. Вы можете распространить оригинальный ключ для использования на других машинах, используя ответ code4life выше

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...