Файл .env и причем тут безопасность
Салимжанов Р.Д.
Ведение
Одним из инструментов, который помогает разработчикам управлять конфиденциальной информацией, является файл .env. В этой статье мы рассмотрим, что такое файл .env, как он используется и почему он важен для обеспечения безопасности приложений.
Что такое файл .env?
Файл .env — это текстовый файл, который содержит переменные окружения в формате "ключ=значение". Он используется для хранения конфиденциальной информации, такой как API-ключи, пароли к базам данных, настройки сервера и другие параметры конфигурации, которые не должны быть жестко закодированы в исходном коде приложения.
Зачем нужен файл .env?
1. Конфиденциальность данных
Одной из основных причин использования файла .env является необходимость защиты конфиденциальной информации. Хранение таких данных в исходном коде делает их доступными для всех, кто имеет доступ к репозиторию. Это может привести к утечке данных и серьезным последствиям для безопасности приложения.
2. Удобство настройки
Файл .env позволяет разработчикам легко управлять конфигурацией приложения. Все переменные окружения находятся в одном месте, что упрощает процесс настройки. При необходимости изменения конфигурации достаточно отредактировать файл .env, не затрагивая исходный код.
3. Разделение окружений
Разные окружения (разработка, тестирование, продакшн) могут требовать различных настроек. Файл .env позволяет создать отдельные конфигурации для каждого окружения, что упрощает процесс развертывания и тестирования приложения.
Прейдем к примеру «Подключение к базе данных PostgreSQL в JavaScript»
Мы рассмотрим, как подключиться к базе данных PostgreSQL с помощью JavaScript и библиотеки pg, а также выполним простой SQL-запрос. Все это я буду делать в IntelliJ IDEA (согласен на любителя, но что поделать).
Первым действием нужно установить необходимые зависимости в нашем преете JS.
Для этого перейдем в терминал и выполним несколько команд.
Инициализируем проект js:
npm init
Установим библиотеку pg:
npm install pg
Установим библиотеку dotenv , это пакет для Node.js, который как раз, позволяет загружать переменные окружения из файла .env:
npm install dotenv
Создадим файл db.js и .env в корне проекта.
В созданный файл .env , в корне нашего проекта, мы добавим параметры подключения к базе данных PostgreSQL. Естественно, параметры могут быть разными, все зависит от ваших запосов. Но, к примеру будет так:
Теперь давайте проверим и напишем простейший код подключения в файл db.js:
И запускаем чтобы проверить:
node db.js
Важные моменты:
require('dotenv').config(); - эта строка загружает конфиденциальные данные (такие как учетные данные для подключения к базе данных) из файла .env, чтобы они не были жестко закодированы в исходном коде.
Создание экземпляра Client:
new Client({...}) создает новый объект клиента для подключения к базе данных PostgreSQL. Внутри фигурных скобок {...} передаются параметры, необходимые для подключения к базе данных. Эти параметры включают: user, host, database, password, port. В результате, этот код создает клиентское соединение с базой данных PostgreSQL, используя параметры, загруженные из файла .env.
Другие варианты
Конечно есть еще один извращенный способ не использовать dotenv. В среде разработки IntelliJ IDEA (или любой другой IDE) вы можете использовать Gradle. Однако, если вы работаете с JavaScript и Node.js, то использование Gradle не является стандартной практикой, так как Gradle в основном используется для проектов на Java. Для разнообразия, это можно сделать так:
Выкидываем строку require('dotenv').config();
И действуем, в верху с право нажимаем на Current File и выбираем Edit:
Далее в окошке с верху слева нажимаем + в списке находим Gradle:
В разделе "Environment variables" добавьте необходимые переменные окружения, такие как PGUSER, PGHOST, PGDATABASE, PGPASSWORD, и PGPORT.
Но естественно, такой подход я не рекомендую лучше использовать dotenv для загрузки переменных окружения из файла .env в js.
А также Node.js включает встроенную поддержку файлов .env. С недавним выпуском версии 20.6.0 в Node.js появилась встроенная поддержка файлов .env. Теперь можно загружать переменные окружения из .env-файла в process.env в своем Node.js-приложении, полностью избавившись от зависимостей.
Загрузка файла .env осуществляется просто:
node --env-file .\.env db.js
И естественно не забудьте добавлять файл .env в .gitignore, чтобы предотвратить его случайное добавление в систему контроля версий, такую как Git. Это поможет защитить ваши конфиденциальные данные, такие как пароли и ключи API, от несанкционированного доступа.
Заключение
Файл .env является важным инструментом для обеспечения безопасности приложений. Он помогает изолировать конфиденциальную информацию, упрощает управление конфигурацией и снижает риск утечек данных. Важно помнить, что безопасность — это не только использование правильных инструментов, но и соблюдение лучших практик разработки. Использование файла .env в сочетании с другими мерами безопасности поможет защитить ваше приложение и данные пользователей.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1) Переменные окружения для начинающих разработчиков или использование .env файла в разработке программного обеспечения // [электронный ресурс]. URL: https://habr.com/ru/companies/gnivc/articles/792082/ (дата обращения 02.01.2025).
2) Переменные окружения в Node.js: полное руководство // [электронный ресурс]. URL: https://habr.com/ru/companies/otus/articles/779852/ (дата обращения 03.01.2025).
3) Node.js включает встроенную поддержку файлов .env// [электронный ресурс]. URL: https://nodejsdev.ru/guides/env/ (дата обращения 03.01.2024).