Перейти к содержанию

Конфигурация окружения и секреты

Начало урока

Конфигурация окружения и секреты

Держите пароли, API-ключи и настройки для разных сред вне исходного кода

Главная идея: вашей программе нужны значения, которые меняются между вашим ноутбуком и настоящим сервером - пароль базы данных, API-ключ, номер порта. Прописывать их прямо в .js-файлах небезопасно и негибко. Конфигурация окружения позволяет передавать эти значения извне кода, поэтому один и тот же код работает везде, а ваши секреты никогда не попадают в систему контроля версий.
К концу урока вы сможете:
  • читать конфигурацию из process.env,
  • хранить локальные настройки в файле .env и загружать их через dotenv,
  • не пускать .env в Git с помощью .gitignore и поставлять безопасный .env.example,
  • проверять конфигурацию при запуске и задавать разумные значения по умолчанию для каждой среды.

1. Проблема: секреты в коде

Представьте, что вы подключаетесь к базе данных прямо внутри исходного файла:

// db.js  --  так делать НЕЛЬЗЯ
const mysql = require('mysql2/promise');

const pool = mysql.createPool({
  host: 'db.myapp.com',
  user: 'admin',
  password: 'S3cr3t-Pa55!',   // настоящий пароль, попавший в Git
});

На вашей машине это работает, но здесь три серьёзные проблемы:

  • Утечка секретов. Как только вы сделаете git commit, этот пароль навсегда останется в истории репозитория - даже если позже вы удалите строку. Любой, у кого есть доступ к репозиторию (или к публичной копии на GitHub), сможет его прочитать.
  • Непереносимость. Вашему ноутбуку, ноутбуку коллеги и продакшн-серверу нужны разные значения. Жёстко прописанные строки заставляют менять код только ради смены хоста.
  • Сложно менять. Когда ключ скомпрометирован, вы хотите заменить его за секунды, а не искать по файлам и заново развёртывать приложение.

Аналогия. Считайте исходный код рецептом, который вы публикуете в кулинарной книге, а секреты - ключом от вашего дома. Рецептом вы поделитесь с радостью, но ключ от дома внутри него печатать не станете. Конфигурация - это запечатанный конверт, который вы отдаёте тому, кто готовит на вашей кухне: он остаётся при среде, а не при рецепте.

Продолжите этот урок на YourAIZone

В полном уроке — объяснение целиком, разобранные примеры, частые ошибки, тесты с мгновенной проверкой и ИИ-репетитор. Начните сразу как гость или создайте аккаунт, чтобы сохранять прогресс.

В полном уроке

  • Объяснение целиком
  • Разобранные примеры
  • Частые ошибки и как их избежать
  • Тестовые вопросы: 15
  • ИИ-репетитор, который отвечает на вопросы по теме
  • Отслеживание прогресса для ученика, родителей и учителя