DanLevy.net

NodeJS में एनवायरनमेंट वेरिएबल्स का उपयोग

dotenv का उपयोग

Hero image for NodeJS में एनवायरनमेंट वेरिएबल्स का उपयोग

गोपनीय और API टोकन्स को सुरक्षित रूप से संभालना

संबंधित लेख: अपने टोकन्स की रक्षा करें

चलिए secret और non-secret के बीच अंतर को जल्दी से दोहरा लेते हैं।



हम इस आर्टिकल में 🔒 Secret keys के साथ पर्यावरण चर का उपयोग करके कैसे निपटें इस पर ध्यान केंद्रित करेंगे।

कोड उदाहरण नीचे शामिल हैं।

सारांश

अपने NodeJS कोड में रहस्यों को सुरक्षित रूप से एक्सेस करने के लिए:

  1. हार्डकोड किए गए कुंजियों को पर्यावरण चर से बदलें। उदाहरण के लिए process.env.API_SECRET
  2. dotenv जैसी पुस्तकालय का उपयोग करें https://github.com/motdotla/dotenv एक .env फ़ाइल के साथ। पहले से हार्डकोड किए गए रहस्यों को .env फ़ाइल में जोड़ें।
  3. अपने .gitignore फ़ाइल में .env लाइन की पुष्टि करें!

नहीं बनाएं डिप्लॉय किए गए सर्वर पर .env फ़ाइल। अपने होस्टिंग सेवाओं (जैसे Heroku, Netlify, AWS EC2) द्वारा प्रदान किए गए पर्यावरण चर प्रबंधन उपकरण का उपयोग करें: उदाहरण के लिए डैशबोर्ड या कमांड लाइन।

कोड उदाहरण

हम कुछ फ़ाइलों को परिभाषित करने वाले हैं।

  1. .env
  2. ./db/connection.js
  3. ./api/users.js

सबसे पहले, dotenv पैकेज को इंस्टॉल करें।

Terminal window
npm install dotenv

अगले, अपने प्रोजेक्ट के रूट में एक .env फ़ाइल बनाएं।

.env
PGDATABASE="postgres"
PGHOST="localhost"
PGPORT=5234
PGUSER="postgres"
PGPASSWORD="password"

कभी भी .env फ़ाइल को कमिट न करें।

❌ सर्वर पर .env फ़ाइल बनाने से बचें।

अपने होस्टिंग प्रदाता की दस्तावेज़ में जाकर पर्यावरण चर स्थापित करें।

अपने .gitignore में .env लाइन है या नहीं, यह आसानी से चेक करने के लिए:

Terminal window
# स्वचालित रूप से .gitignore अपडेट करें
# टर्मिनल में चलाएं:
[ "$(grep '^.env' .gitignore)" == "" ] && echo '.env' >> .gitignore
# नोट: कोई आउटपुट प्रिंट नहीं होगा

./db/connection.js फ़ाइल डेटाबेस को क्वेरी करने के लिए एक साझा pg.Pool इंस्टैंस प्रदान करती है।

./db/connection.js
require('dotenv').config(); // ✅ .env फ़ाइल लोड करें
const pg = require('pg');
const {PGUSER, PGHOST, PGPORT} = process.env;
if (process.env.NODE_ENV === 'development')
console.log(`जुड़ रहे हैं ${PGUSER} @ ${PGHOST}:${PGHOST}`);
// ^^ डीबग कनेक्शन वैरिएबल दिखाने के लिए ही
// pg स्वचालित रूप से PG* पर्यावरण चर का उपयोग करता है
module.exports = new pg.Pool();

./api फ़ोल्डर आपकी टेबल/व्यू के इंटरफ़ेस शामिल करता है।

यहाँ ./api/users.js का एक उदाहरण है users टेबल के लिए।

./api/users.js
const db = require('../db/connection.js');
module.exports = {
findUsername: function(username) {
return db.query('SELECT * FROM users WHERE username=$1', username);
}
};

* प्रत्येक नई डेवलॉपमेंट लैपटॉप या डेस्कटॉप पर नए एक्सेस की और टोकन जनरेट करें। अगर यह संभव न हो तो अपने .env के शेयरिंग में बहुत सावधानी बरतें (एक सेवा जो पुराने की को निरस्त कर सकती है या आपके पास भुगतान वाले API के सीमित एक्सेस टोकन हैं।)

⚠️ महत्वपूर्ण: आवश्यकता पड़ने पर हमेशा सुरक्षित मैसेजिंग सेवा का उपयोग करें (समाप्त होने वाले संदेश समर्थन के साथ अधिक अच्छा होगा।)

अच्छा लक अउ मुझे बताएं अगर आपके पास कोई सवाल है! 🎉