Где хранить пароль

163
06 января 2020, 05:50

Пишу приложение asp.net core MVC. Необходимо хранить пароль от почты для SMTP. Для каждого пользователя своя почта и свой пароль. Возник вопрос, где и как безопасно хранить эти данные и строку подключения к бд?

Answer 1

Есть такой свод рекомендаций, который называется Двенадцать факторов.

Там рекомендуют строки подключения к БД хранить в переменных окружения. Этот способ поддерживается в Heroku и Azure, наверное, и в других облачных хостингах тоже.

Альтернатива: использовать скрипт развёртывания, который будет загружать код из репозитория git/mercurial на сервер, а потом будет трансформировать конфигурационные файлы, которые должны храниться в одном из стандартных форматов: XML, JSON, YAML. Этот способ не так безопасен, как первый.

Что касается паролей пользователей от внешних сервисов, их, к сожалению, придётся хранить не в виде хэшей. В целях безопасности код приложения может шифровать пароли перед записью в базу и дешифровывать при чтении.

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

Этот способ подходит в случае, если у вас множество пользователей в базе, и для каждого надо хранить SMTP/login/password. Если эти пользователи кто-то вроде администраторов или роботов, и их всего 2–3, используйте рекомендации Двенадцать факторов.

Answer 2

Если у вас Core - то родной способ хостинга для вас - Docker / Kubernetes или Azure Web Apps.

Стандартный способ спускания конфигурации и в Azure и в Docker - через переменные окружения.

В случае Kubernetes - есть секреты, которые спускаются в поды через те же переменные окружения.

READ ALSO
Как передать на принтер информацию о необходимости сшивать листы?

Как передать на принтер информацию о необходимости сшивать листы?

Есть Konica Minolta 554e, на ней размножаем документы (всего 38 документов)Часть из документов печатается в две страницы на листе, часть одностраничные,...

196
Response Ajax в laravel

Response Ajax в laravel

У меня есть страница, на которой три поляДанные в контроллер отправляются при помощи Ajax

185
Защитить get-параметры от подделки

Защитить get-параметры от подделки

На партнерском сайте пользователь заполняет и отправляет форму с параметрами order, email и amount на сайт оплаты заказа (в order хранится номер заказа)

179
MODX revo как передать файл с формы через phpmailer

MODX revo как передать файл с формы через phpmailer

Собственно есть сайт на MODX revoЕсть форма с которой пользователь может отправлять помимо своих данных еще и файл

194