Как защитить имя пользователя и пароль в строке подключения?

при разработке приложений Windows:

  1. Как защитить имя пользователя и пароль в строке подключения?

  2. Такие организации, как банки, будут ли они выдавать имя пользователя и пароль своей БД разработчикам приложений? если не обычно, как эти разработчики приложений пишут подключения к БД?

  3. Каков отраслевой стандарт защиты пользователя и пароля в строке подключения?

Благодарность


person sniff_bits    schedule 24.01.2014    source источник


Ответы (4)


  1. Как защитить имя пользователя и пароль в строке подключения?

Либо используйте проверку подлинности Windows, чтобы исключить необходимость в пароле в строке подключения, либо используйте комбинацию одного или нескольких из следующих вариантов:

Обратите внимание, что описанные выше методы хорошо работают для серверных приложений (например, ASP.NET), где доступ к серверу может быть ограничен авторизованными администраторами. Это плохо работает для клиентских приложений, которые напрямую обращаются к базе данных.

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

2. Могут ли такие организации, как банки, сообщать разработчикам приложений имя пользователя и пароль своей БД? если не обычно, как эти разработчики приложений пишут подключения к БД?

Как правило, разработчикам предоставляются учетные данные только для доступа к базам данных в среде разработки / тестирования. Доступ к производственным базам данных будет ограничен.

3. Каков отраслевой стандарт защиты пользователя и пароля в строке подключения?

Не существует "отраслевого стандарта", но см. Ответ на вопрос 1.

person Joe    schedule 24.01.2014
comment
во втором ответе вы упомянули о тестовой среде, я полагаю, вы имели в виду, что это был набор фиктивных данных, параллельных оригиналу? - person sniff_bits; 24.01.2014
comment
@sniff_bits - какие данные находятся в базе данных разработки / тестирования, будет зависеть от организации. Если производственные данные являются конфиденциальными, это могут быть фиктивные данные или, возможно, анонимная версия производственных данных. Если это не конфиденциально, это может быть просто снимок производственных данных. - person Joe; 24.01.2014
comment
@Joe: я хочу развернуть свое приложение для конечных пользователей. Как мне защитить имя пользователя / пароль, используя для подключения к централизованному серверу SQL? Как вы писали, это плохо работает для клиентских приложений, которые напрямую обращаются к базе данных. - person YukiSakura; 16.12.2017
comment
@YukiSakura - это не работает, потому что пользователь сможет получить доступ к базе данных, если он достаточно решителен. Чтобы смягчить это, вы можете ограничить то, что разрешено для входа в базу данных (например, выполнять только хранимые процедуры, которые необходимы для приложения). Но он никогда не может быть таким же безопасным, как архитектура с веб-сервисом между клиентом и базой данных, когда клиент не может напрямую обращаться к базе данных. - person Joe; 16.12.2017

Вы можете зашифровать разделы в app.config. так же, как web.config. MS называет это защищенной конфигурацией. Нравится

<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
  <EncryptedData>
    <CipherData>
      <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAH2... </CipherValue>
    </CipherData>
  </EncryptedData>
</connectionStrings>
person vikky    schedule 24.01.2014

Из MSDN:

ASP.NET 2.0 представила новую функцию, называемую защищенной конфигурацией, которая позволяет вам зашифровать конфиденциальную информацию в файле конфигурации. Защищенная конфигурация, разработанная в первую очередь для ASP.NET, также может использоваться для шифрования разделов файла конфигурации в приложениях Windows. Подробное описание возможностей защищенной конфигурации см. На странице Шифрование информации о конфигурации с помощью защищенной конфигурации.

Следующий фрагмент файла конфигурации показывает раздел connectionStrings после того, как он был зашифрован. ConfigProtectionProvider указывает поставщик защищенной конфигурации, используемый для шифрования и дешифрования строк подключения. Раздел EncryptedData содержит зашифрованный текст.

 <connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
  <EncryptedData>
    <CipherData>
      <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAH2... </CipherValue>
    </CipherData>
  </EncryptedData>
</connectionStrings>

Когда зашифрованная строка подключения извлекается во время выполнения, .NET Framework использует указанного поставщика, чтобы расшифровать CipherValue и сделать его доступным для вашего приложения. Вам не нужно писать дополнительный код для управления процессом дешифрования. Прочтите следующую статью на MSDN для получения дополнительной информации:

Строки подключения и файлы конфигурации

person Erwin    schedule 24.01.2014
comment
Здесь, в SO, неодобрительно относятся к ответам только по ссылкам. Попробуйте добавить немного деталей - person crthompson; 24.01.2014
comment
Нет, но я полагаю, что вы можете составить ответ, который резюмирует статью, а затем включить ссылку. Это добавило бы ценности. Ссылки не добавляют ценности. - person crthompson; 24.01.2014
comment
Тратить время на комментарии ... лучше скопировать информацию из MSDN в ответ. - person Erwin; 24.01.2014

Вам следует использовать параметры.

пример SqlCommand command = new SqlCommand ("выберите * из входа, где имя пользователя = @name", conn); command.Parameters.Add (новый SqlParameter ("@ name", uname.txt)); .

person user3229034    schedule 24.01.2014
comment
Это не о защите данных строки подключения - person Sergey Berezovskiy; 24.01.2014
comment
Я думаю, что OP ищет, как зашифровать пользователя и передать для подключения к базе данных, а не для выбора пользователя и передачи из базы данных. - person crthompson; 24.01.2014