Защищенные методы хранения ключей, паролей для 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, потому что его изменение приводит к перезапуску пула приложений.
Мое голосование состояло в том, чтобы хранить их в зашифрованном виде в базе данных и обеспечивать простой способ изменения значений (например, хранить значения в кеше и обновлять их, когда они изменяются пользователем).