/ / При шифруванні строку з'єднання web.config, де зберігається ключ? - c #, asp.net, шифрування, конфігурація, криптографія

Коли шифрується рядок з'єднання web.config, де зберігається ключ? - c #, asp.net, шифрування, конфігурація, криптографія

При шифруванні рядка з'єднання в web.config, де зберігається ключ?

Крім того, вам потрібно повторно скомпілювати, коли ви змінюєте вхідні дані підключення?

Відповіді:

2 для відповіді № 1

Відповідно до ця документація у вас є два постачальника під час шифрування конфігурації:

  • RSAProtectedConfigurationProvider
  • DPAPIProtectedConfigurationProvider

Я маю мало знань про DPAPI, тому я не можукажуть що-небудь за чи проти. Коли я вважав за необхідне використовувати шифрування web.config, я вибрав RSA і визначив іншу CSP для зберігання мого шифрувального ключа RSA. Ви можете встановити його в machine.config у елементі configProtectedData.

На зазначеній сторінці описуються та наводяться інструкції щодо шифрування секцій web.config за допомогою програми RSAProtectedConfigurationProvider. При використанні цього провайдера у вас є два варіанти

  • Контейнер для машинного рівня (Ключ RSA буде зберігатися в Документи та налаштуванняВсі користувачіЗаявки на даніMicrosoftCryptoRSAMachineKeys)
  • Ключовий контейнер на рівні користувача (Ключ RSA буде зберігатися в Документи та Налаштування {UserName} Приклад DataMicrosoftCryptoRSA)

Посібник потім описує, як використовувати Aspnet_Regiis.exe інструмент з RSAProtectedConfigurationProvider для шифрування розділів вашого файлу конфігурації.

Відповісти на ваше друге запитання. Вам не потрібно повторно компілювати додаток, але вам доведеться розшифровувати розділ (рядок з'єднання), змінити облікові дані та знову зашифрувати розділ. Або замінити web.config новим і знову зашифрувати.

Зверніть увагу, що при шифруванні розділу виповинен мати ключ шифрування на тій же машині, що й web.config. У посібнику згадується, як експортувати RSA-ключ від однієї машини та імпортувати його до іншого для використання в веб-фермах.

Але подумайте про це на мить: Коли ваша програма може розшифрувати веб-конфігурацію (оскільки вона повинна це зробити, перш ніж використовувати рядок з'єднання), тоді кожен може це зробити (якщо він може перейти до машини). Я знаю, що дозволи на використання ключа можуть бути встановлені і т.д. і т.п., але IMHO це неправильно практикувати використання паролів у рядку з'єднання.

Останнє. The Aspnet_Regiis.exe Інструмент, згаданий у посібнику вище, може шифрувати лише веб-конфігурацію. Якщо у вас є app.config і хочете його зашифрувати, подивіться на це це СО питання.


0 для відповіді № 2

Я можу відповісти на друге питання, але не на перше.

Вам не потрібно повторно компілювати, коли ви змінюєте векселі ланцюжків з'єднання, оскільки web.config завантажується динамічно.


0 для відповіді № 3

Ви можете зберігати його там, де ви хочете, просто не в web.config. пропозиції:
1. в іншому конфігураційному файлі.
2. реєстр.
3. жорстко закодований.

Я, мабуть, піде на перший варіант.