Пароли на безопасность кода удаленного сервера

#security #web

#Безопасность #веб

Вопрос:

Я создаю веб-приложение, которое будет отправлять электронные письма для подтверждения регистрации. Я буду использовать https://github.com/RGBboy/express-mailer . Я хотел знать, безопасно ли для меня отображать пароль электронной почты в коде и отправлять его на сервер (Heroku, AWS и т.д.), Где размещено приложение. Если нет, то какие альтернативные методы мне следует использовать, чтобы «скрыть» пароль?

Комментарии:

1. Одна вещь, которую я видел, например, в wordpress, заключается в использовании config.sample.php с пустыми значениями по умолчанию, а затем вы сохраняете «производственные» значения в config.php а затем добавьте этот файл в список игнорируемых файлов (.gitignore, я думаю? Я не знаю. Я никогда не использую git.)

Ответ №1:

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

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

Что касается других случаев, таких как ваша настройка разработки, это может быть сделано с использованием .env файлов, которые загружаются и их значения отображаются в вашем запущенном коде. Поскольку [express-mailer][2] это узловое приложение, я предлагаю использовать какой-нибудь пакет npm, такой как dotenv или node-env-file автоматически выполнять эту загрузку.Я лично предпочитаю, dotenv что, на мой взгляд, проще.

Вам также следует ознакомиться с этой статьей, касающейся использования .env файлов. Основная идея заключается в том, чтобы ваш .gitignore (или эквивалентный) файл мог игнорировать ваш .env файл, таким образом гарантируя, что ваши секретные учетные данные никогда не будут введены в систему управления версиями. А затем настройте .env.sample файл, чтобы показать разработчику, какие данные необходимо объявить в указанном .env файле.

Пример:

.env

 EMAIL=foo@bar.com
PASSWORD=AahUbf796
S3_TOKEN=ASVNS7843NCA87SDVNBRT9
  

.env.пример

 EMAIL=<email to access the account>
PASSWORD=<secret password>
S3_TOKEN=<s3 token for application foobar>
  

Ответ №2:

Вы никогда не должны хранить секреты в системе управления версиями.

Одна из альтернатив (которая лично мне нравится больше всего) — это установка секретов в качестве переменных окружения для вашего приложения в вашей производственной среде. Heroku, я думаю, поддерживает это. Такой же подход используется, например, в Rails. «Секреты» разработки / тестирования (которые на самом деле не являются реальными учетными данными для чего-либо ценного), конечно, все еще могут храниться в вашей виртуальной машине.

Ответ №3:

Другой вариант — зашифровать учетные данные пользователя в вашем исходном коде и расшифровать их из вашего исходного кода.