Защищенные методы хранения ключей, паролей для asp.net

Какова наилучшая практика хранения ключей и паролей для веб-сайта. Эти ключи предназначены для различных сторонних веб-сервисов. Лучше ли иметь их в файле Web.config или в базе данных или как-то зашифровать?

Ответ 1

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

Ответ 2

Вы можете хранить зашифрованные значения в файле .config, и ASP.NET 2.0 расшифровывает их на лету.

Ваша конфигурация будет выглядеть примерно так:

<configSections>
   <section 
      name="sampleSection" 
      type="System.Configuration.SingleTagSectionHandler" 
   />
</configSections>

<MySecrets
   FavoriteMusic="Disco" 
   FavoriteLanguage="COBOL" 
   DreamJob="Dancing in the opening ceremonies of the Olympics" 
/>

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

aspnet_regiis -pef MySecrets .

От К. Скотта Аллена:

http://odetocode.com/Blogs/scott/archive/2006/01/08/2707.aspx

Ответ 3

Зависит от того, как часто меняются значения. Если они никогда не изменятся, я сохраню их в исходном коде.

Я бы держался подальше от хранения данных, которые изменяются в Web.Config, потому что его изменение приводит к перезапуску пула приложений.

Мое голосование состояло в том, чтобы хранить их в зашифрованном виде в базе данных и обеспечивать простой способ изменения значений (например, хранить значения в кеше и обновлять их, когда они изменяются пользователем).