अपने टोकन, API कुंजियों और सीक्रेट्स की सुरक्षा कैसे करें
सार्वजनिक? निजी? क्या?
अपने टोकन की सुरक्षा कब करें?
API कुंजियों और टोकन की सुरक्षा अत्यंत महत्वपूर्ण है!
एक गलती से आपके सर्वर और डेटा का नियंत्रण हैकर्स के हाथ में जा सकता है!
यह तय करना इतना मुश्किल नहीं होना चाहिए कि किसी विशेष टोकन को छिपाना है या नहीं — भले ही आधिकारिक दस्तावेज़ों के आधार पर!
इसे और भी बदतर बनाता है उन शब्दों का सूप जिनका आप सामना करेंगे: टोकन, कुंजियाँ, क्रेडेंशियल्स, सीक्रेट्स, प्राइवेट, और पब्लिक।
आइए इसे सीक्रेट और नॉन-सीक्रेट के बीच के रूप में देखें।
- 🔒
सीक्रेट कुंजियाँको छिपा कर रखना अनिवार्य है। आम तौर पर उन्हें आपके प्राइवेट सर्वर (या सेवा — जैसे Heroku, Netlify या Travis-CI) से कभी बाहर नहीं जाना चाहिए। - 🌍
नॉन-सीक्रेट कुंजियाँउन स्ट्रिंग्स का वर्णन करती हैं जिन्हें स्वतंत्र रूप से साझा किया जा सकता है और ब्राउज़र अनुरोधों में शामिल किया जा सकता है।
🔒 सीक्रेट कुंजियाँ
** ‼️ महत्वपूर्ण:** सीक्रेट कुंजियों को Git द्वारा नज़रअंदाज़ किया जाना चाहिए और सभी ब्राउज़र कोड से हटाया जाना चाहिए। dotenv का उपयोग कैसे करें
आप कैसे जानते हैं कि आप सीक्रेट कुंजी से निपट रहे हैं?
👍 नियम-ऑफ़-थंब: जो सर्वर CORS errors देते हैं, उनमें ब्राउज़र समर्थन की कमी होती है। यह दृढ़ता से संकेत देता है कि आपको सेवा को प्रॉक्सी करना चाहिए, इसे सीक्रेट के रूप में मानते हुए।
👍 नियम-ऑफ़-थंब: महंगी सेवाओं को लगभग हमेशा प्रॉक्सी या छिपाया जाना चाहिए।
👍 नियम-ऑफ़-थंब: यदि आप राइट ऑपरेशन करते हैं (फ़ाइल अपलोड, डीबी में पंक्ति डालना), तो आप सीक्रेट कुंजियों से निपट रहे हो सकते हैं।
उपयोग के मामले और विशेषताएँ: सीक्रेट कुंजियाँ
- दीर्घकालिक प्राधिकरण (क्रेडेंशियल्स, एक्सेस टोकन, JSON Web Tokens)
- अल्पकालिक प्राधिकरण (OAuth टोकन, सेशन स्टोर)
- भुगतान/महंगी सेवाओं तक पहुंच (ऑथ, जियोकोडिंग, फ़ाइल स्टोरेज, आदि के लिए)
- पब्लिक/प्राइवेट जोड़े का प्राइवेट हिस्सा (RECAPTCHA, Stripe, Auth0)
- सेवा क्रेडेंशियल्स (ईमेल/SMTP, LDAP/डायरेक्टरी सेवाएँ)
- डेटा एन्क्रिप्शन और अखंडता जाँच
सीक्रेट्स को सुरक्षित रखने की चेकलिस्ट
त्वरित अवलोकन
अपने कोड से सीक्रेट्स को हटाने के लिए निम्नलिखित चरण पूरे करें:
- हार्ड-कोडेड कुंजियों को एनवायरनमेंट वेरिएबल्स से बदलें। उदा.
process.env.API_SECRET -
.envफ़ाइल के साथdotenvजैसी लाइब्रेरी का उपयोग करें। अपनी पहले हार्ड-कोडेड सीक्रेट्स को.envफ़ाइल में जोड़ें। - अपनी
.gitignoreफ़ाइल में.envलाइन जोड़ें!
ऐसा न करें डिप्लॉय किए गए सर्वर पर
.envफ़ाइल बनाएं। अपनी होस्टिंग सेवा (जैसे Heroku, Netlify, AWS EC2) द्वारा प्रदान किए गए एनवायरनमेंट वेरिएबल प्रबंधन टूल का उपयोग करें: उदा. डैशबोर्ड या कमांड लाइन।
संबंधित लेख: NodeJS में dotenv का सुरक्षित उपयोग
🌍 नॉन-सीक्रेट कुंजियाँ
👍 नियम-ऑफ़-थंब: जब भी कोई कुंजी कोड या इनलाइन के माध्यम से ब्राउज़र को भेजी जानी हो (उदा. <script src="https://my-api/?apiKey=123-abc-456"> टैग के माध्यम से), यह निश्चित रूप से एक नॉन-सीक्रेट है। एक आम उदाहरण Google Maps है।
उपयोग के मामले और विशेषताएँ: नॉन-सीक्रेट कुंजियाँ
- अल्पकालिक पहुंच (यूज़र सेशन आईडी, JSON Web Tokens)
- ऐप/डेवलपर द्वारा API एक्सेस को सीमित करना (ऑथ, जियोकोडिंग, आदि के लिए)
- पब्लिक/प्राइवेट जोड़े का पब्लिक हिस्सा (RECAPTCHA, Stripe, Auth0)
- एनालिटिक्स आईडी
✅ नॉन-सीक्रेट्स को संभालना:
नॉन-सीक्रेट (पब्लिक) कुंजियों को हार्ड-कोड करना सुरक्षित है!
इसे अपने ऐप के लिए साझा config.js के साथ दीर्घकालिक प्रबंधन में आसान बनाएं।
उदाहरण:
module.exports = { googleMapsKey: '123-abc'};const config = require('./config.js');const key = config.googleMapsKey;const src = `//maps.googleapis.com/maps/api/js?key=${key}`;// ...नोट: एनवायरनमेंट वेरिएबल्स के अन्य उपयोग मामले भी हैं। कुछ जिन्हें मैंने नहीं कवर किया: CI/CD/टेस्टिंग, फ़ीचर फ़्लैग्स, और विशेष एनवायरनमेंट के लिए रनटाइम कॉन्फ़िगरेशन!