यदि आप अभी अपना वेब विकास या Node.js यात्रा शुरू कर रहे हैं, तो आप इस बात से अनभिज्ञ हो सकते हैं कि अपने ऐप को सुरक्षित करना कितना महत्वपूर्ण है।
Express.js बैकएंड वेब ऐप बनाने के लिए एक अच्छा समाधान प्रदान करता है, लेकिन इसमें सुरक्षा की कमी है। जब आप कोई वेब एप्लिकेशन बना रहे हों, तो आपको अपने उपयोगकर्ताओं के डेटा की सुरक्षा के लिए पर्याप्त सुरक्षा उपायों की आवश्यकता होती है।
सौभाग्य से, ऐसे तरीके हैं जिन्हें आप अपने Express.js एप्लिकेशन की सुरक्षा बढ़ाने के लिए अपना सकते हैं। ये टिप्स विभिन्न तरीकों का उपयोग करके आपके एप्लिकेशन की सुरक्षा को बढ़ाने में मदद करेंगे।
Express.js एप्लिकेशन सेट करें
एक डेमो सेट करके प्रारंभ करें Express.js वेब सर्वर का उपयोग करते हुए npm, नोड पैकेज मैनेजर. स्थानीय रूप से प्रोजेक्ट फ़ोल्डर बनाएं और निर्देशिका को अपने टर्मिनल पर बदलें।
mkdir एक्सप्रेस-प्रोजेक्ट
सीडी एक्सप्रेस-प्रोजेक्ट
अगला, एक बनाएँ पैकेज.जेसन रूट डायरेक्टरी में फाइल करें।
एनपीएम init -y
आगे बढ़ो और Express.js स्थापित करें।
एनपीएम एक्सप्रेस स्थापित करें
अंत में, एक बनाएँ सर्वर.जेएस अपने प्रोजेक्ट फोल्डर की रूट डायरेक्टरी में फाइल करें, और एक बेसिक वेब सर्वर सेट करने के लिए निम्न कोड जोड़ें।
कॉन्स्ट एक्सप्रेस = ज़रूरत होना("अभिव्यक्त करना")
कॉन्स्ट ऐप = एक्सप्रेस ()
कॉन्स्ट पोर्ट = प्रक्रिया.env। पोर्ट || 5000ऐप.गेट ("/", (अनुरोध, रेस) => {
रेस.जेसन("हैलो वर्ल्ड!")
})
app.listen (पोर्ट, () => {
सांत्वना देना।लकड़ी का लट्ठा('सर्वर चालू हो रहा है http://localhost:${पोर्ट}`)
})
इस आदेश के साथ सर्वर प्रारंभ करें:
नोड सर्वर.जेएस
अब आप उन कुछ उपायों का पता लगाने के लिए तैयार हैं जिनका उपयोग आप अपने Express.js एप्लिकेशन को सुरक्षित करने के लिए कर सकते हैं।
1. हेलमेट का उपयोग कर Express.js एप्लीकेशन को सुरक्षित करना
हेलमेट एक Node.js मिडलवेयर है जो विभिन्न HTTP सुरक्षा हेडर सेट करके सर्वर-साइड ऐप्स को सुरक्षित करने में मदद करता है। ये हेडर के खिलाफ आवश्यक रक्षा तंत्र प्रदान करते हैं सामान्य बैकएंड सुरक्षा भेद्यताएँ, जैसे क्रॉस-साइट स्क्रिप्टिंग (XSS), क्रॉस-साइट अनुरोध जालसाज़ी (CSRF), और बहुत कुछ।
Express.js डिफ़ॉल्ट रूप से HTTP सुरक्षा शीर्षलेखों को कॉन्फ़िगर नहीं करता है, संभावित संवेदनशील शीर्षलेखों को उजागर करने वाले संभावित सुरक्षा दोष को छोड़ देता है। इस जानकारी का उपयोग करके, दुर्भावनापूर्ण अभिनेता अनधिकृत पहुंच प्राप्त करने में सक्षम हो सकते हैं या अन्यथा आपके ऐप को बाधित कर सकते हैं।
हेलमेट एक महत्वपूर्ण ढाल के रूप में कार्य करता है, यह सुनिश्चित करता है कि एप्लिकेशन की HTTP प्रतिक्रियाएँ आवश्यक सुरक्षा उपायों को अपनाती हैं, संभावित हमले की सतह को काफी कम करती हैं।
बिना हेलमेट के Express.js एप्लीकेशन की सुरक्षा की खोज
सर्वर के चलने के साथ, एप्लिकेशन के शीर्षलेखों की जांच करें। आगे बढ़ो और पोस्टमैन का उपयोग करके एपीआई के लिए HTTP अनुरोध करें या कोई अन्य ग्राहक जो प्रतिक्रिया शीर्षलेख दिखाता है। अधिकांश ब्राउज़रों में डेवलपर टूल का एक सेट शामिल होता है जो आपको ऐसा करने देगा।
जब आप होम एंडपॉइंट के लिए अनुरोध भेजते हैं, तो आपको इसी तरह के परिणाम देखने चाहिए हेडर पोस्टमैन के भीतर प्रतिक्रिया का खंड।
ध्यान दें एक्स-संचालित-तक शीर्ष लेख। आमतौर पर, बैकएंड प्रौद्योगिकियां इस हेडर का उपयोग फ्रेमवर्क या अन्य सॉफ़्टवेयर को इंगित करने के लिए करती हैं जो वेब एप्लिकेशन को शक्ति प्रदान करता है। आपको आमतौर पर हटा देना चाहिए एक्स-संचालित-तक एक उत्पादन वातावरण में शीर्षलेख।
ऐसा करके, आप संभावित हमलावरों को मूल्यवान जानकारी प्राप्त करने से रोकेंगे, जिसका उपयोग वे आपकी प्रौद्योगिकी स्टैक से जुड़ी ज्ञात कमजोरियों का फायदा उठाने के लिए कर सकते हैं।
Express.js सर्वर के सुरक्षा कॉन्फ़िगरेशन का परीक्षण करें
आपके ऐप्लिकेशन की सुरक्षा स्थिति का आकलन करने के लिए, हम इसका उपयोग करेंगे सुरक्षा शीर्षलेख ऑनलाइन उपकरण। यह ऐप विशेष रूप से क्लाइंट-साइड के साथ-साथ सर्वर-साइड एप्लिकेशन के लिए HTTP हेडर के सुरक्षा कॉन्फ़िगरेशन का मूल्यांकन करने के लिए डिज़ाइन किया गया है।
सबसे पहले, आपको अपने स्थानीय Express.js सर्वर को इंटरनेट पर एक्सेस करने योग्य बनाना होगा। इसे प्राप्त करने के दो संभावित तरीके हैं: अपने Express.js एप्लिकेशन को क्लाउड सर्वर पर परिनियोजित करना या ngrok का उपयोग करना।
इसके प्रयेाग के लिए, एनरोक डाउनलोड करें zip फ़ाइल, निष्पादन योग्य निकालें, और एप्लिकेशन लॉन्च करें। फिर, ngrok के साथ अपने स्थानीय Express.js सर्वर को होस्ट करने के लिए निम्न कमांड चलाएँ।
एनग्रोक http 5000
ngrok इस तरह दिखने वाली कुछ संक्षिप्त जानकारी का उत्पादन करेगा:
प्रदान की गई कॉपी करें अग्रेषण यूआरएल और में पेस्ट कर दें सुरक्षा शीर्षलेख' इनपुट बॉक्स, और पर क्लिक करें स्कैन बटन।
एक बार सुरक्षा मूल्यांकन पूरा हो जाने के बाद, आपको एक समान रिपोर्ट प्राप्त करनी चाहिए।
रिपोर्ट के आधार पर, यह स्पष्ट है कि Express.js सर्वर को खराब प्राप्त हुआ एफ श्रेणी। यह निम्न ग्रेड सर्वर के कॉन्फ़िगरेशन में आवश्यक HTTP सुरक्षा शीर्षलेखों की अनुपस्थिति का परिणाम है- उनकी अनुपस्थिति सर्वर को संभावित सुरक्षा जोखिमों के प्रति संवेदनशील बनाती है।
Express.js एप्लिकेशन में हेलमेट को एकीकृत करें
अब, आगे बढ़ें और हेलमेट को अपने Express.js एप्लिकेशन में एकीकृत करें। निर्भरता स्थापित करने के लिए नीचे दी गई कमांड चलाएँ।
एनपीएम हेल्मेट स्थापित करें
अपनी सर्वर.जेएस फ़ाइल को अपडेट करें और हेलमेट आयात करें।
कॉन्स्ट हेलमेट = ज़रूरत होना("हेलमेट")
अब, अपने Express.js एप्लिकेशन में हेलमेट जोड़ें।
app.use (हेलमेट ())
अंत में, विकास सर्वर को स्पिन करें, अग्रेषण लिंक को कॉपी करें ngrok के टर्मिनल, और इसे में पेस्ट करें सुरक्षा हैडर स्थानीय सर्वर को पुन: स्कैन करने के लिए इनपुट फ़ील्ड। एक बार रीस्कैन पूरा हो जाने पर, आपको इनके समान परिणाम दिखाई देने चाहिए:
हेलमेट को एकीकृत करने के बाद, Express.js HTTP प्रतिक्रिया में कई आवश्यक सुरक्षा हेडर शामिल करता है। इस पर्याप्त सुधार के कारण Express.js एप्लिकेशन को a ए श्रेणी।
जबकि हेलमेट एक आसान समाधान नहीं है, यह आपके Express.js एप्लिकेशन की समग्र सुरक्षा को महत्वपूर्ण रूप से बढ़ाता है।
2. एक इनपुट वैलिडेशन लाइब्रेरी, जॉय का उपयोग करके Express.js एप्लिकेशन को सुरक्षित करना
जॉय एक इनपुट वैलिडेशन लाइब्रेरी है जो यूज़र इनपुट को वेलिडेट और सैनिटाइज़ करने का एक सुविधाजनक तरीका प्रदान करके Express.js ऐप्स को सुरक्षित करने में मदद करती है। जॉय का उपयोग करके सत्यापन स्कीमा को परिभाषित करके, आप आने वाले डेटा के लिए अपेक्षित संरचना, डेटा प्रकार और बाधाओं को निर्दिष्ट कर सकते हैं।
जॉय परिभाषित स्कीमा के खिलाफ इनपुट को मान्य करता है, यह सुनिश्चित करता है कि यह निर्दिष्ट मानदंडों को पूरा करता है। यह डेटा इंजेक्शन, क्रॉस-साइट स्क्रिप्टिंग (XSS) और अन्य डेटा हेरफेर हमलों जैसी सामान्य सुरक्षा कमजोरियों को रोकने में मदद करता है।
जॉय को अपने आवेदन में एकीकृत करने के लिए इन चरणों का पालन करें।
- जॉय स्थापित करें।
एनपीएम जॉय स्थापित करें
- अपने सर्वर.जेएस फ़ाइल में जॉय आयात करें।
कॉन्स्ट जोई = ज़रूरत होना('जोई');
- एक जॉय डेटा सत्यापन स्कीमा बनाएं जो अपेक्षित संरचना और इनपुट डेटा के लिए किसी भी बाधा को परिभाषित करता है।
कॉन्स्ट स्कीमा = जॉय ऑब्जेक्ट ({
ईमेल: जॉय.स्ट्रिंग ()। ईमेल ()। आवश्यक (),
पासवर्ड: जॉय.स्ट्रिंग ()। मिनट (5.अधिकतम(16)।आवश्यक()
}); - परिभाषित स्कीमा का उपयोग करके आने वाले सभी डेटा को मान्य करें।
कॉन्स्ट {त्रुटि, मान} = स्कीमा.वैलिडेट (req.body);
अगर (गलती) {
// हैंडल सत्यापन त्रुटि
// उदाहरण के लिए, एक त्रुटि प्रतिक्रिया लौटाएं
वापस करना res.status (400.json({ गलती: गलतियों की जानकारी[0]।संदेश });
}
इन चरणों को लागू करके, आप अपने Express.js अनुप्रयोगों को सुरक्षित करने के लिए जॉय की इनपुट सत्यापन क्षमताओं का लाभ उठा सकते हैं। यह सुनिश्चित करेगा कि आने वाला डेटा परिभाषित बाधाओं को पूरा करता है, संभावित डेटा हेरफेर सुरक्षा खतरों को रोकता है।
3. CORS तंत्र का उपयोग करके Express.js अनुप्रयोगों को सुरक्षित करना
क्रॉस-ऑरिजनल रिसोर्स शेयरिंग (सीओआरएस) एक ऐसा तंत्र है जिसका उपयोग वेब सर्वर यह प्रबंधित करने के लिए करते हैं कि कौन से ऑरिजिन-क्लाइंट या अन्य सर्वर-साइड एप्लिकेशन-उनके संरक्षित संसाधनों तक पहुंच सकते हैं। यह तंत्र क्रॉस-साइट स्क्रिप्टिंग (XSS) हमलों जैसे मुद्दों को रोकने के लिए अनधिकृत क्रॉस-मूल अनुरोधों से बचाने में मदद करता है।
CORS का उपयोग करके Express.js एप्लिकेशन को सुरक्षित करने के लिए, इन चरणों का पालन करें:
- CORS पैकेज स्थापित करें।
एनपीएम कॉर्स स्थापित करें
- Server.js फ़ाइल में CORS मिडलवेयर की आवश्यकता और उपयोग करें।
कॉन्स्ट कॉर्स = ज़रूरत होना('कॉर्स');
app.use (cors ());
CORS मिडलवेयर को अपने Express.js एप्लिकेशन में एकीकृत करके, आप क्रॉस-ओरिजनल रिसोर्स शेयरिंग को सक्षम करते हैं। यह सुनिश्चित करता है कि आप क्रॉस-ऑरिजिन अनुरोधों से संबंधित संभावित सुरक्षा जोखिमों को कम करते हैं।
सर्वर-साइड एप्लिकेशन को आसानी से सुरक्षित करना
आप अपने Express.js एप्लिकेशन की सुरक्षा बढ़ाने के लिए इनमें से एक या अधिक आवश्यक उपायों का उपयोग कर सकते हैं।
जबकि आपके सर्वर-साइड एप्लिकेशन की सुरक्षा के लिए कई उपाय और दृष्टिकोण उपलब्ध हैं, मुख्य बात यह है कि आपको संपूर्ण विकास जीवनचक्र में सुरक्षा को प्राथमिकता देनी चाहिए। यह एक ऐसा कार्य है जो डिजाइन चरण में शुरू होता है और परिनियोजन के माध्यम से सही तरीके से जारी रहना चाहिए।