2016-01-04 24 views
9

पासपोर्टजेएस फेसबुक प्रमाणीकरण का उपयोग कर आईओएस बैकएंड के लिए पर्याप्त नोड जेएस के साथ पर्याप्त है?प्रमाणीकरण (पासपोर्ट) नोड जेएस बैकएंड सर्वर के साथ सुरक्षा के लिए पर्याप्त है?

मेरे पास टोबोबसी पैकेज है और जब चीजें व्यस्त होती हैं तो अनुरोध अस्वीकार करने के लिए (मुझे लगता है कि यह डीडीओएस के लिए अच्छा होगा)।

मैं अपने नोड.जेएस सर्वर पर एक रिवर्स प्रॉक्सी के रूप में nginx का उपयोग करने की सोच रहा हूं।

कुछ और सुरक्षा उपायों क्या हैं जो स्केल कर सकते हैं? कुछ सलाह और टिप्स? कुछ सुरक्षा से संबंधित है कि मुझे उस पासपोर्ट जेएस के प्रमाणीकृत सत्र के बारे में चिंतित होना चाहिए?

उत्तर

6

यह थोड़ा सभी सुरक्षा से संबंधित एक पोस्ट में सर्वोत्तम प्रथाओं में रटना कठिन है, लेकिन कर रहे हैं कि यह क्या है के लिए लायक, इस मुद्दे पर मेरा लेना है।

प्रमाणीकरण प्रदान करना और सुरक्षित करना यह दो अलग-अलग चीजें हैं। पासपोर्टजेएस प्रमाणीकरण से संबंधित सबकुछ को संभालने में सक्षम होगा, लेकिन यह मूर्खतापूर्ण या अभिभूत होने से रोकने वाली पूरी तरह से अलग चीज है।

एक रिवर्स प्रॉक्सी (आरपी) के पीछे पासवर्डजेएस डालने का एक (बड़ा) कारण यह है कि आप HTTP से संबंधित किसी भी चीज़ के लिए रक्षा की पहली पंक्ति प्रदान करने में सक्षम होंगे: हेडर/बॉडी लम्बाई/डेटा, अनुमत विधियों, डुप्लिकेट/अवांछित शीर्षलेख, आदि

Nginx/Apache/HAProxy सभी इन मामलों को संभालने के लिए उत्कृष्ट सुविधाएं प्रदान करते हैं और ऊपर की तरफ, आपको चिंताओं का एक अच्छा अलगाव मिलता है: रिवर्स प्रॉक्सी हैंडल सुरक्षा दें और पासपोर्टजेएस हैंडल दें प्रमाणीकरण। वास्तुकला के अनुसार, यह और अधिक समझ में आएगा क्योंकि आप पासपोर्टजेएस नोड्स की संख्या और बुनियादी ढांचे को छिपाने में सक्षम होंगे। असल में, आप इसे दिखाना चाहते हैं क्योंकि आपके क्लाइंट के लिए केवल एक प्रविष्टि बिंदु है। स्केलिंग आउट इस वास्तुकला के साथ भी आसान होगा। हमेशा के रूप में, सुनिश्चित करें कि आपके आरपी रैखिक रूप से स्केल करने के लिए जितना संभव हो उतना छोटा राज्य रखें, अधिमानतः कोई भी नहीं।

अपने आरपी को सही तरीके से कॉन्फ़िगर करने के लिए, आपको वास्तव में समझना होगा कि पासपोर्टजेएस प्रोटोकॉल (यदि आप केवल फेसबुक के मुकाबले अधिक प्रमाणीकरण विधियां प्रदान करना चाहते हैं)।इसे जानना, आप अपने आरपी (एस) को

  • किसी भी अस्वीकृत अनुरोध HTTP विधि (ट्रेसी, विकल्प, पुट, डिलीट इत्यादि) को अस्वीकार कर सकते हैं।
  • किसी ज्ञात आकार से अनुरोध/हेडर/पेलोड को अस्वीकार करें।
  • अपने पासपोर्टजेएस नोड्स को लोड-बैलेंस करें।

एक बात की तलाश में होने के लिए लोड संतुलन के मामले में चिपचिपा सत्र हैं। कुछ प्रामाणिक अपने सभी राज्य को एन्क्रिप्टेड कुकी में संग्रहीत करते हैं, अन्य लोग एक साधारण सत्र हैंडल होंगे, जिसे केवल सत्र बनाने वाले नोड द्वारा समझा जा सकता है। इसलिए जब तक आपके पास बाद के प्रकार के लिए सत्र साझाकरण सक्षम नहीं है (यदि आपको पासपोर्टजेएस लचीलापन की आवश्यकता है), तो आपको चिपचिपा सत्रों को संभालने के लिए अपने आरपी को कॉन्फ़िगर करना होगा। यह अधिकतम राज्य होना चाहिए जो उन्हें संभालना चाहिए। सही तरीके से कॉन्फ़िगर किया गया है, यदि आपको आरपी को पुनरारंभ करने की आवश्यकता है तो यह भी काम कर सकता है।

के रूप में आप लगन से कहा, toobusy (या समतुल्य) जगह थ्रॉटल संभाल करने में होना चाहिए। मेरे अनुभव में, थ्रॉटलिंग के संबंध में अन्य आरपी की तुलना में हैप्रोक्सी काम करना थोड़ा आसान है, लेकिन toobusy को भी ठीक काम करना चाहिए, खासकर अगर आप इससे पहले से परिचित हैं।

एक और चीज जो आपके नियंत्रण में हो या न हो, नेटवर्क विभाजन है। जाहिर है, आरपी को सुलभ होने की जरूरत है, लेकिन उन्हें आपके पासपोर्टजेएस नोड्स के लिए रिले के रूप में कार्य करना चाहिए। यदि संभव हो तो सर्वोत्तम अभ्यास, अपने बैकएंड सर्वर से अलग नेटवर्क/डीएमजेड पर अपने प्रमाणीकरण नोड्स डालना है, ताकि वे आरपी के माध्यम से सीधे नहीं पहुंच सकें। अगर समझौता किया गया है, तो उन्हें बैकएंड/आंतरिक नेटवर्क पर पत्थर लगाने के रूप में इस्तेमाल नहीं किया जाना चाहिए।

+0

आपके उत्तर के लिए धन्यवाद, डैनियल! – Lucky

2

पासपोर्ट दस्तावेज के अनुसार: "उपयोगकर्ता नाम और पासवर्ड, फेसबुक, ट्विटर और अन्य का उपयोग करके समर्थन प्रमाणीकरण।"

यह मिडलवेयर है, जिसके साथ नोडजेएस के साथ कई प्रकार की सुरक्षा पद्धतियों को एकीकृत करने की व्यवहार्यता प्रदान की जाती है।

आपको आवेदन के उद्देश्य पर विचार करना चाहिए, क्या यह केवल फेसबुक प्रमाणीकरण या कस्टम रजिस्टर/लॉगिन प्रक्रिया का समर्थन कर रहा है। यदि यह दूसरा विकल्प प्रदान कर रहा है, तो उस स्थिति में, फेसबुक/ट्विटर या किसी अन्य सोशल नेटवर्किंग साइट के किसी भी सोशल नेटवर्किंग साइट के बारे में विचार करना बेहतर नहीं है।

बेहतर विकल्प जेडब्ल्यूटी टोकन की तरह अपना खुद का टोकन बनाना है, और उपयोगकर्ता को कई प्लेटफॉर्म से बांधना है। यह आपको अन्य सोशल नेटवर्किंग साइटों को एकीकृत करने के लिए अपनी परियोजना के दायरे को विस्तारित करने में मदद करेगा।

नोडजेएस में जेडब्ल्यूटी को एकीकृत करने का लिंक यहां दिया गया है।

https://scotch.io/tutorials/authenticate-a-node-js-api-with-json-web-tokens

इसी प्रकार कई अन्य ब्लॉगों और ट्यूटोरियल बाजार में उपलब्ध NodeJS

साथ जेडब्ल्यूटी एकीकृत करने के लिए
+0

उत्तर देने के लिए धन्यवाद, अंकित – Lucky

संबंधित मुद्दे