APISIX क्रॉस-ऑरिजिन समाधानों पर गहन जानकारी
January 27, 2024
वेब एप्लिकेशन डेवलपमेंट में, क्रॉस-ओरिजिन समस्याएं एक लोकप्रिय विषय बन गई हैं। हालांकि, API गेटवे के व्यापक अपनाव के साथ, अब हमारे पास क्रॉस-ओरिजिन समस्याओं को हल करने के लिए एक अधिक सुविधाजनक और कुशल समाधान है। API गेटवे, एप्लिकेशन आर्किटेक्चर में एक महत्वपूर्ण घटक के रूप में, न केवल अनुरोध रूटिंग और API प्रबंधन जैसी कार्यक्षमताएं प्रदान करता है, बल्कि क्रॉस-ओरिजिन अनुरोधों को प्रभावी ढंग से संभालता है, जिससे डेवलपर्स को ब्राउज़र की समान-ओरिजिन नीति प्रतिबंधों को दरकिनार करने में मदद मिलती है। यह लेख इस बात पर गहराई से चर्चा करेगा कि कैसे API गेटवे APISIX का उपयोग करके क्रॉस-ओरिजिन समस्याओं को हल किया जा सकता है।
क्रॉस-ओरिजिन क्या है?
क्रॉस-ओरिजिन समस्याएं मुख्य रूप से ब्राउज़र द्वारा लागू की गई समान-ओरिजिन नीति से उत्पन्न होती हैं। समान-ओरिजिन नीति के अनुसार, एक अनुरोध का स्रोत (प्रोटोकॉल, डोमेन, पोर्ट) लक्ष्य संसाधन के साथ बिल्कुल समान होना चाहिए; अन्यथा, ब्राउज़र अनुरोध को अवरुद्ध कर देगा। यह नीति उपयोगकर्ता की सूचना सुरक्षा की रक्षा करने और दुर्भावनापूर्ण वेबसाइटों को डेटा चोरी करने से रोकने के लिए है। हालांकि, व्यावहारिक विकास में, फ्रंटएंड-बैकएंड अलगाव या विभिन्न डोमेन या पोर्ट पर तैनाती जैसे परिदृश्य अक्सर क्रॉस-ओरिजिन समस्याओं का कारण बनते हैं।
APISIX का उपयोग करके क्रॉस-ओरिजिन समस्याओं का समाधान
CORS (क्रॉस-ओरिजिन रिसोर्स शेयरिंग)
CORS (क्रॉस-ओरिजिन रिसोर्स शेयरिंग) एक W3C मानक है जो ब्राउज़र को क्रॉस-ओरिजिन सर्वरों को अनुरोध भेजने की अनुमति देता है, जिससे समान-ओरिजिन नीति के प्रतिबंधों को दूर किया जा सकता है। APISIX में, डेवलपर्स CORS प्लगइन का उपयोग करके आसानी से CORS नियमों को कॉन्फ़िगर कर सकते हैं, यह निर्दिष्ट करते हुए कि कौन से स्रोत संसाधनों तक पहुंचने की अनुमति है।
APISIX में CORS कॉन्फ़िगर करने के लिए curl का उपयोग करके उदाहरण कमांड:
curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri": "/hello", "plugins": { "cors": {} }, "upstream": { "type": "roundrobin", "nodes": { "127.0.0.1:8080": 1 } } }'
यह कमांड APISIX के Admin API को एक PUT अनुरोध भेजती है, जो ID 1 के साथ एक रूट बनाती है। रूट को /hello URI पथ के साथ कॉन्फ़िगर किया गया है, और डिफ़ॉल्ट कॉन्फ़िगरेशन में CORS प्लगइन सक्षम है। इसके अलावा, अपस्ट्रीम सर्वर को 127.0.0.1:8080 के रूप में निर्दिष्ट किया गया है।
एक परीक्षण अनुरोध निष्पादित करने पर डिफ़ॉल्ट कॉन्फ़िगरेशन परिणाम प्राप्त होगा:
curl http://127.0.0.1:9080/hello -v ... < Server: APISIX web server < Access-Control-Allow-Origin: * < Access-Control-Allow-Methods: * < Access-Control-Allow-Headers: * < Access-Control-Expose-Headers: * < Access-Control-Max-Age: 5 ...
यदि CORS नीति में समायोजन की आवश्यकता हो, तो संबंधित प्लगइन कॉन्फ़िगरेशन को संशोधित करें। यहां कुछ सामान्यतः उपयोग किए जाने वाले कॉन्फ़िगरेशन विकल्प दिए गए हैं:
-
allow_origins: क्रॉस-ओरिजिन पहुंच के लिए अनुमत स्रोतों को निर्दिष्ट करता है। यह एक विशिष्ट URL हो सकता है या सभी स्रोतों की अनुमति देने के लिए वाइल्डकार्ड '*' का उपयोग कर सकता है। एकाधिक मानों को अल्पविराम से अलग किया जाता है। -
allow_methods: क्रॉस-ओरिजिन पहुंच के लिए अनुमत HTTP विधियों को परिभाषित करता है, जैसे GET, POST आदि। एकाधिक मानों को अल्पविराम से अलग किया जाता है। -
allow_headers: क्रॉस-ओरिजिन अनुरोधों में कस्टम हेडर फ़ील्ड ले जाने की अनुमति देता है। एकाधिक मानों को अल्पविराम से अलग किया जाता है। -
expose_headers: क्रॉस-ओरिजिन प्रतिक्रियाओं में कस्टम हेडर फ़ील्ड को उजागर करने के लिए निर्दिष्ट करता है। एकाधिक मानों को अल्पविराम से अलग किया जाता है। -
max_age: ब्राउज़र द्वारा CORS प्रतिक्रियाओं को कैश करने की अधिकतम समय सीमा निर्धारित करता है। -
allow_credentials: निर्धारित करता है कि क्रॉस-ओरिजिन अनुरोधों में प्रमाणीकरण जानकारी (जैसे कुकीज़) ले जाने की अनुमति है या नहीं।

ध्यान देने योग्य बिंदु
विशेष ध्यान देने योग्य बात यह है कि हालांकि CORS का उपयोग करना आसान है, लेकिन इसे सक्षम करने से सुरक्षा समस्याएं उत्पन्न हो सकती हैं। यह मुख्य रूप से इसलिए है क्योंकि CORS समान-ओरिजिन नीति के प्रतिबंधों को शिथिल करता है, जिससे विभिन्न स्रोतों से अनुरोध संसाधनों तक पहुंच सकते हैं।
इस संदर्भ में, आइए allow_credentials पर ध्यान केंद्रित करें। allow_credentials CORS में एक महत्वपूर्ण कॉन्फ़िगरेशन आइटम है, जो निर्धारित करता है कि क्रॉस-ओरिजिन अनुरोधों में प्रमाणीकरण जानकारी ले जाने की अनुमति है या नहीं। इसमें संवेदनशील डेटा, जैसे कुकीज़, HTTP प्रमाणीकरण जानकारी, या क्लाइंट SSL प्रमाणपत्र शामिल हैं।
डिफ़ॉल्ट रूप से, allow_credentials अक्षम होता है, जिसका अर्थ है कि यह प्रमाणीकरण जानकारी ले जाने की अनुमति नहीं देता है। हालांकि, यदि CORS सक्षम है और यह प्रमाणीकरण जानकारी ले जाने की अनुमति देता है (allow_credentials: true), तो अतिरिक्त सावधानी आवश्यक है। इसका मतलब है कि अन्य स्रोतों से अनुरोध संरक्षित संसाधनों तक पहुंच सकते हैं, जिससे संवेदनशील कार्रवाइयां निष्पादित हो सकती हैं। उदाहरण के लिए, एक दुर्भावनापूर्ण वेबसाइट इस कॉन्फ़िगरेशन कमजोरी का फायदा उठाकर उपयोगकर्ताओं को क्रॉस-ओरिजिन अनुरोध शुरू करने के लिए प्रेरित कर सकती है, जिससे उनके सत्र कुकीज़ चोरी हो सकती हैं या अनधिकृत कार्रवाइयां हो सकती हैं।
क्रॉस-ओरिजिन अनुरोधों को सक्षम करते समय संभावित सुरक्षा समस्याओं को कम करने के लिए, निम्नलिखित सर्वोत्तम प्रथाओं का पालन करने की सलाह दी जाती है:
allow_originको सावधानी से कॉन्फ़िगर करें:allow_originको*(सभी स्रोतों की अनुमति) के रूप में अनियंत्रित रूप से सेट करने से बचें। इसके बजाय, अनुमत स्रोतों को स्पष्ट रूप से निर्दिष्ट करें।allow_credentialsको सीमित करें:allow_credentialsको केवल आवश्यक होने पर सक्षम करें और इसे विश्वसनीय स्रोतों तक सीमित करें।- सुरक्षित परिवहन प्रोटोकॉल का उपयोग करें: सुनिश्चित करें कि CORS अनुरोध HTTPS पर प्रसारित होते हैं, ताकि मैन-इन-द-मिडल हमलों को रोका जा सके।
- प्रमाणीकरण और प्राधिकरण: बैकएंड सर्वर पर, क्रॉस-ओरिजिन अनुरोधों के लिए उचित प्रमाणीकरण और प्राधिकरण जांच लागू करें, यह सुनिश्चित करते हुए कि केवल अधिकृत उपयोगकर्ता ही संवेदनशील संसाधनों तक पहुंच सकते हैं।
- असुरक्षित HTTP विधियों का उपयोग करने से बचें: क्रॉस-ओरिजिन अनुरोधों में उपयोग की जाने वाली HTTP विधियों को सीमित करें, केवल सुरक्षित विधियों जैसे GET और POST की अनुमति दें, जबकि संभावित रूप से जोखिम भरी विधियों जैसे PUT और DELETE को अक्षम करें, जो सुरक्षा जोखिम पैदा कर सकती हैं।
रिवर्स प्रॉक्सी
CORS का उपयोग करने के अलावा, APISIX खुद को रिवर्स प्रॉक्सी के रूप में कॉन्फ़िगर करके क्रॉस-ओरिजिन समस्याओं को अप्रत्यक्ष रूप से हल कर सकता है। रिवर्स प्रॉक्सी एक सामान्य सर्वर आर्किटेक्चर पैटर्न है जहां रिवर्स प्रॉक्सी सर्वर क्लाइंट और लक्ष्य सर्वर के बीच एक मध्यस्थ के रूप में कार्य करता है। जब एक क्लाइंट अनुरोध शुरू करता है, तो ये अनुरोध पहले रिवर्स प्रॉक्सी सर्वर को भेजे जाते हैं, जो फिर उन्हें वास्तविक लक्ष्य सर्वर को अग्रेषित करता है। प्रसंस्करण पूरा होने के बाद, लक्ष्य सर्वर की प्रतिक्रिया रिवर्स प्रॉक्सी को वापस भेजी जाती है, जो अंततः क्लाइंट को वापस पास की जाती है।

यह समझना महत्वपूर्ण है कि रिवर्स प्रॉक्सी स्वयं सीधे क्रॉस-ओरिजिन समस्याओं को हल नहीं करता है, बल्कि यह ब्राउज़र की समान-ओरिजिन नीति प्रतिबंधों को चतुराई से दरकिनार करता है। जब एक क्लाइंट को क्रॉस-ओरिजिन अनुरोध करने की आवश्यकता होती है, तो यह वास्तव में अनुरोध को रिवर्स प्रॉक्सी सर्वर को भेजता है, न कि सीधे लक्ष्य सर्वर को। चूंकि रिवर्स प्रॉक्सी सर्वर और लक्ष्य सर्वर आमतौर पर एक ही नेटवर्क वातावरण या कॉन्फ़िगरेशन में होते हैं, इसलिए उनके बीच संचार समान-ओरिजिन नीति प्रतिबंधों के अधीन नहीं होता है। यह रिवर्स प्रॉक्सी सर्वर को क्लाइंट के अनुरोधों को लक्ष्य सर्वर को स्वतंत्र रूप से अग्रेषित करने और प्रतिक्रियाओं को क्लाइंट को वापस करने की अनुमति देता है, जिससे क्रॉस-ओरिजिन पहुंच का लक्ष्य अप्रत्यक्ष रूप से प्राप्त होता है।
चूंकि APISIX एक API गेटवे के रूप में कार्य करता है, यह स्वाभाविक रूप से क्लाइंट और सर्वर के बीच तैनात होने के लिए स्थित होता है। इसलिए, छोटे पैमाने के एप्लिकेशन में, क्लाइंट एप्लिकेशन और APISIX को एक ही डोमेन में तैनात करने और क्लाइंट के अनुरोध पते को APISIX सेवा पते में संशोधित करने से यह सुनिश्चित होता है कि क्लाइंट APISIX तक सुचारू रूप से पहुंच सकता है। यह रिवर्स प्रॉक्सी कार्यक्षमता का उपयोग करके क्लाइंट के लिए क्रॉस-ओरिजिन पहुंच प्रदान कर सकता है। इसके अलावा, अन्य प्लगइन्स को संयोजित करके पूरे संचार प्रक्रिया की सुरक्षा और विश्वसनीयता सुनिश्चित की जा सकती है।
निष्कर्ष
इस लेख में, हमने APISIX का उपयोग करके क्रॉस-ओरिजिन समस्याओं को हल करने के तरीकों का पता लगाया है, जिसमें दो विधियों पर ध्यान केंद्रित किया गया है: CORS और रिवर्स प्रॉक्सी। CORS प्लगइन को उचित रूप से कॉन्फ़िगर करके, हम ब्राउज़र द्वारा लगाए गए समान-ओरिजिन नीति प्रतिबंधों को शिथिल कर सकते हैं, जिससे क्रॉस-ओरिजिन अनुरोध संसाधनों तक पहुंच सकते हैं। दूसरी ओर, रिवर्स प्रॉक्सी एक मध्यस्थ के रूप में कार्य करता है, जो ब्राउज़र की समान-ओरिजिन नीति को दरकिनार करता है और क्रॉस-ओरिजिन पहुंच को सुविधाजनक बनाता है। प्रत्येक विधि के अपने फायदे हैं, और उचित समाधान का चयन विशिष्ट आवश्यकताओं पर निर्भर करता है। चाहे CORS का उपयोग करें या रिवर्स प्रॉक्सी, APISIX लचीली और शक्तिशाली कार्यक्षमताएं प्रदान करता है, जो डेवलपर्स को क्रॉस-ओरिजिन समस्याओं को सहजता से हल करने और एप्लिकेशन के सामान्य संचालन और उपयोगकर्ता अनुभव को सुनिश्चित करने में मदद करता है।