DanLevy.net

अपने टोकन, API कुंजियों और सीक्रेट्स की सुरक्षा कैसे करें

सार्वजनिक? निजी? क्या?

Hero image for अपने टोकन, API कुंजियों और सीक्रेट्स की सुरक्षा कैसे करें

अपने टोकन की सुरक्षा कब करें?

API कुंजियों और टोकन की सुरक्षा अत्यंत महत्वपूर्ण है!

एक गलती से आपके सर्वर और डेटा का नियंत्रण हैकर्स के हाथ में जा सकता है!

यह तय करना इतना मुश्किल नहीं होना चाहिए कि किसी विशेष टोकन को छिपाना है या नहीं — भले ही आधिकारिक दस्तावेज़ों के आधार पर!

इसे और भी बदतर बनाता है उन शब्दों का सूप जिनका आप सामना करेंगे: टोकन, कुंजियाँ, क्रेडेंशियल्स, सीक्रेट्स, प्राइवेट, और पब्लिक

आइए इसे सीक्रेट और नॉन-सीक्रेट के बीच के रूप में देखें।



🔒 सीक्रेट कुंजियाँ

** ‼️ महत्वपूर्ण:** सीक्रेट कुंजियों को Git द्वारा नज़रअंदाज़ किया जाना चाहिए और सभी ब्राउज़र कोड से हटाया जाना चाहिए। dotenv का उपयोग कैसे करें


आप कैसे जानते हैं कि आप सीक्रेट कुंजी से निपट रहे हैं?


👍 नियम-ऑफ़-थंब: जो सर्वर CORS errors देते हैं, उनमें ब्राउज़र समर्थन की कमी होती है। यह दृढ़ता से संकेत देता है कि आपको सेवा को प्रॉक्सी करना चाहिए, इसे सीक्रेट के रूप में मानते हुए।

👍 नियम-ऑफ़-थंब: महंगी सेवाओं को लगभग हमेशा प्रॉक्सी या छिपाया जाना चाहिए।

👍 नियम-ऑफ़-थंब: यदि आप राइट ऑपरेशन करते हैं (फ़ाइल अपलोड, डीबी में पंक्ति डालना), तो आप सीक्रेट कुंजियों से निपट रहे हो सकते हैं।


उपयोग के मामले और विशेषताएँ: सीक्रेट कुंजियाँ

सीक्रेट्स को सुरक्षित रखने की चेकलिस्ट

त्वरित अवलोकन

अपने कोड से सीक्रेट्स को हटाने के लिए निम्नलिखित चरण पूरे करें:

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

संबंधित लेख: NodeJS में dotenv का सुरक्षित उपयोग


🌍 नॉन-सीक्रेट कुंजियाँ

👍 नियम-ऑफ़-थंब: जब भी कोई कुंजी कोड या इनलाइन के माध्यम से ब्राउज़र को भेजी जानी हो (उदा. <script src="https://my-api/?apiKey=123-abc-456"> टैग के माध्यम से), यह निश्चित रूप से एक नॉन-सीक्रेट है। एक आम उदाहरण Google Maps है।


उपयोग के मामले और विशेषताएँ: नॉन-सीक्रेट कुंजियाँ

✅ नॉन-सीक्रेट्स को संभालना:

नॉन-सीक्रेट (पब्लिक) कुंजियों को हार्ड-कोड करना सुरक्षित है!

इसे अपने ऐप के लिए साझा config.js के साथ दीर्घकालिक प्रबंधन में आसान बनाएं।

उदाहरण:

config.js
module.exports = {
googleMapsKey: '123-abc'
};
load-map.js
const config = require('./config.js');
const key = config.googleMapsKey;
const src = `//maps.googleapis.com/maps/api/js?key=${key}`;
// ...

नोट: एनवायरनमेंट वेरिएबल्स के अन्य उपयोग मामले भी हैं। कुछ जिन्हें मैंने नहीं कवर किया: CI/CD/टेस्टिंग, फ़ीचर फ़्लैग्स, और विशेष एनवायरनमेंट के लिए रनटाइम कॉन्फ़िगरेशन!