NodeJS में एनवायरनमेंट वेरिएबल्स का उपयोग
dotenv का उपयोग
गोपनीय और API टोकन्स को सुरक्षित रूप से संभालना
संबंधित लेख: अपने टोकन्स की रक्षा करें
चलिए secret और non-secret के बीच अंतर को जल्दी से दोहरा लेते हैं।
- 🔒
Secret keysको तीसरे पक्ष की API सेवाओं पर अनुरोध छिपाने (प्रॉक्सी) के लिए कस्टम सर्वर (जैसे Node/Express/Heroku) का उपयोग करना चाहिए। - 🌍
Non-secret keysब्राउज़र में भेजे जा सकने वाली कुंजियों का वर्णन करता है।
हम इस आर्टिकल में 🔒
Secret keysके साथ पर्यावरण चर का उपयोग करके कैसे निपटें इस पर ध्यान केंद्रित करेंगे।
सारांश
अपने NodeJS कोड में रहस्यों को सुरक्षित रूप से एक्सेस करने के लिए:
- हार्डकोड किए गए कुंजियों को पर्यावरण चर से बदलें। उदाहरण के लिए
process.env.API_SECRET dotenvजैसी पुस्तकालय का उपयोग करें https://github.com/motdotla/dotenv एक.envफ़ाइल के साथ। पहले से हार्डकोड किए गए रहस्यों को.envफ़ाइल में जोड़ें।- अपने
.gitignoreफ़ाइल में.envलाइन की पुष्टि करें!
नहीं बनाएं डिप्लॉय किए गए सर्वर पर
.envफ़ाइल। अपने होस्टिंग सेवाओं (जैसे Heroku, Netlify, AWS EC2) द्वारा प्रदान किए गए पर्यावरण चर प्रबंधन उपकरण का उपयोग करें: उदाहरण के लिए डैशबोर्ड या कमांड लाइन।
कोड उदाहरण
हम कुछ फ़ाइलों को परिभाषित करने वाले हैं।
.env./db/connection.js./api/users.js
सबसे पहले, dotenv पैकेज को इंस्टॉल करें।
npm install dotenvअगले, अपने प्रोजेक्ट के रूट में एक .env फ़ाइल बनाएं।
PGDATABASE="postgres"PGHOST="localhost"PGPORT=5234PGUSER="postgres"PGPASSWORD="password"❌ कभी भी .env फ़ाइल को कमिट न करें।
❌ सर्वर पर .env फ़ाइल बनाने से बचें।
अपने होस्टिंग प्रदाता की दस्तावेज़ में जाकर पर्यावरण चर स्थापित करें।
अपने .gitignore में .env लाइन है या नहीं, यह आसानी से चेक करने के लिए:
# स्वचालित रूप से .gitignore अपडेट करें# टर्मिनल में चलाएं:[ "$(grep '^.env' .gitignore)" == "" ] && echo '.env' >> .gitignore# नोट: कोई आउटपुट प्रिंट नहीं होगा./db/connection.js फ़ाइल डेटाबेस को क्वेरी करने के लिए एक साझा pg.Pool इंस्टैंस प्रदान करती है।
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 टेबल के लिए।
const db = require('../db/connection.js');
module.exports = { findUsername: function(username) { return db.query('SELECT * FROM users WHERE username=$1', username); }};- कभी भी अपने
.envसीक्रेट्स को git में कमिट न करें! - टीम में
.envफ़ाइलें शेयर न करें। *
* प्रत्येक नई डेवलॉपमेंट लैपटॉप या डेस्कटॉप पर नए एक्सेस की और टोकन जनरेट करें।
अगर यह संभव न हो तो अपने .env के शेयरिंग में बहुत सावधानी बरतें (एक सेवा जो पुराने की को निरस्त कर सकती है या आपके पास भुगतान वाले API के सीमित एक्सेस टोकन हैं।)
⚠️ महत्वपूर्ण: आवश्यकता पड़ने पर हमेशा सुरक्षित मैसेजिंग सेवा का उपयोग करें (समाप्त होने वाले संदेश समर्थन के साथ अधिक अच्छा होगा।)
अच्छा लक अउ मुझे बताएं अगर आपके पास कोई सवाल है! 🎉