कुछ विशिष्ट आईपी के लिए अपनी वेबसाइट तक पहुंच को प्रतिबंधित करना एक सामान्य आवश्यकता है। इस पोस्ट में, मैं दिखाऊंगा कि एज कंप्यूटिंग का उपयोग करके आईपी अनुमति / अस्वीकार सूची को कैसे लागू किया जाए। सबसे पहले मैं क्लाउडफ्लेयर वर्कर्स से मिलवाता हूं।
क्लाउडफ्लेयर वर्कर्स
Cloudflare कार्यकर्ता हाल के वर्षों में काफी लोकप्रिय तकनीक हैं। यह 2017 में सार्वजनिक रूप से उपलब्ध हो गया और Cloudflare KV संग्रहण 2019 में सार्वजनिक रूप से उपलब्ध हो गया।
क्लाउडफ्लेयर वर्कर्स या केवी स्टोरेज के बहुत गहरे विवरण में जाने के बिना, मैं उन्हें संक्षेप में समझाऊंगा। क्लाउडफ्लेयर वर्कर्स के साथ आप किसी भी एचटीटीपी रिक्वेस्ट एज लेवल को इंटरसेप्ट कर सकते हैं, आप अपने कोड स्निपेट्स को निष्पादित कर सकते हैं और रिक्वेस्ट / रिस्पॉन्स में हेरफेर कर सकते हैं। इसके अलावा आप केवी स्टोरेज का उपयोग कर सकते हैं। क्लाउडफ्लेयर वर्कर्स के अंदर मूल रूप से उपलब्ध डिक्शनरी बनाने/प्राप्त करने के लिए। आप खेल के मैदान के वातावरण को जल्दी से आज़मा सकते हैं, यह काफी सरल और 1-क्लिक परीक्षण वातावरण है।
क्लाउडफ्लेयर केवी स्टोरेज के अलावा, एक डेवलपर के रूप में आपको अधिक उन्नत डेटा संरचनाओं की आवश्यकता हो सकती है। इसके अलावा आप केवी स्टोरेज को बाहर से एक्सेस करना चाह सकते हैं (जैसे बैकएंड या एपीआई या एसडीके क्लाइंट से)। इसलिए हाल ही में हमने रेस्ट एपी अपस्टैश को सक्षम किया है।
अब आप निम्न का उपयोग करके अपने Upstash Redis डेटाबेस तक पहुँच सकते हैं:
- क्लाउडफ्लेयर वर्कर्स में अपस्टैश रेस्ट एपीआई
- आपके कमांड लाइन टर्मिनल में redis-cli
- उस विशेष प्रोग्रामिंग भाषा में कोई भी रेडिस क्लाइंट
कृपया अपने connect
. पर क्लिक करें कुछ नमूना कोड स्निपेट और नमूना आदेशों के लिए अपने डेटाबेस विवरण पृष्ठ में बटन।
आइए Cloudflare वर्कर्स का उपयोग करके एक छोटा एप्लिकेशन बनाएं और Upstash Redis Rest API को एक साथ एक्सप्लोर करें।
आवेदन
Redis को सत्य के स्रोत के रूप में उपयोग करते हुए Cloudflare कार्यकर्ता में IP अनुमति दें/अस्वीकार करें।
आवश्यकताएँ
- एक सर्वर रहित रेडिस डेटाबेस (आप अपस्टैश कंसोल से एक बना सकते हैं)
- एक Cloudflare खाता या आप CF खेल के मैदान का उपयोग कर सकते हैं
- जावास्क्रिप्ट की बुनियादी जानकारी
- बुनियादी Cloudflare कार्यकर्ता ज्ञान
:::नोट वैश्विक डेटाबेस का चयन करें Upstash डेटाबेस बनाते समय। वैश्विक डेटाबेस एज फ़ंक्शंस से विलंबता को कम करने के लिए डेटा को कई क्षेत्रों में दोहराता है।:::
आइए एक Cloudflare कार्यकर्ता बनाएं और अनुरोध को रोकें। जब आप एक कार्यकर्ता बनाते हैं तो यह स्वचालित रूप से नमूना कोड के साथ आ जाएगा।
कार्यान्वयन
आइए विज़िटर का IP पता प्राप्त करें:
async function handleRequest(request) {
const ip = request.headers.get("cf-connecting-ip");
return new Response(ip);
}
हेडर से विज़िटर का IP पता प्राप्त करना संभव है। अब हम जांचना चाहते हैं कि यह आईपी पता अनुमत सूची में है या नहीं। आइए एक ही REST API कॉल करें और अपना कोड सुधारें।
async function handleRequest(request) {
const ip = request.headers.get("cf-connecting-ip");
res = await fetch(
"https://YOUR_DATABASE_ENDPOINT/sismember/allowed-set/" +
ip +
"?_token=YOUR_REST_API_TOKEN"
);
if ((await res.text()).includes("1")) {
return new Response(ip + " is allowed.");
}
return new Response(ip + " is not allowed.");
}
अब हम अपने अपस्टैश रेडिस सर्वर पर एक रेस्ट एपीआई कॉल करते हैं और जांचते हैं कि आईपी एड्रेस सूची में है या नहीं। यदि परिणाम में "1" है तो इसका अर्थ है कि यह सूची में है, अन्यथा नहीं।
आप निम्न कमांड के साथ रेडिस-क्ली का उपयोग करके रेडिस सेट को अपडेट कर सकते हैं:
sadd allowed-set $IP_ADDRESS
निष्कर्ष और भविष्य का कार्य
अब बाकी एपीआई का उपयोग करके अपने रेडिस सर्वर इंस्टेंस तक पहुंचना संभव है। हम बाकी एपीआई का उपयोग करके लगभग सभी कमांड का समर्थन कर रहे हैं। कृपया अधिक विवरण के लिए हमारे दस्तावेज़ देखें। क्लाउडफ्लेयर केवी स्टोरेज के साथ, आप केवल केवी डिक्शनरी एपीआई के लिए बाध्य हैं और क्लाउडफ्लेयर वर्कर्स केवी को तीसरे पक्ष के अनुप्रयोगों से एक्सेस करना आसान नहीं है। लेकिन रेडिस बड़ी संख्या में विभिन्न क्लाइंट एसडीके और रेडिस- क्ली साथ ही Upstash में आप REST API का उपयोग करके अपने Redis डेटाबेस को एक्सेस कर सकते हैं।
क्लाउडफ्लेयर वर्कर्स में इस सरल एप्लिकेशन को एक तरह के सुरक्षा गार्ड तक बढ़ाया जा सकता है। उपयोगकर्ता Redis डेटाबेस में कॉन्फ़िगरेशन मान बदल सकते हैं और Cloudflare Worker Redis से कॉन्फ़िगरेशन पढ़ सकता है।