डेवलपर टूल · UUID जनरेटर
अनुक्रमिक ID लीक व्यावसायिक डेटा: क्यों सार्वजनिक APआई UUID को उजागर करते हैं
· यह क्यों मायने रखती है
uuid क्रिप्टोग्राफी ब्राउज़र-एपिस
ऑटो-इंक्रीमेंट ID बाहरी लोगों को बताती है कि आप कितने ऑर्डर लेते हैं और प्रत्येक रिकॉर्ड को गणना योग्य बनाते हैं। यह पोस्ट बताती है कि एक्सपोज़िंग UUID क्या ठीक करता है, क्या नहीं, और माइग्रेशन के बिना उन्हें कैसे पेश किया जाए।
आपके चालान नंबर प्रतिस्पर्धियों को आपकी मात्रा बता रहे हैं - /orders/10482 में सूचना लीक
एक API समापन बिंदु जो /orders/10482 लौटाता है, किसी बाहरी व्यक्ति को ऑर्डर विवरण से कहीं अधिक बताता है। संख्यात्मक पहचानकर्ता संकेत देता है कि आपने कम से कम दस हजार ऑर्डर संसाधित किए हैं, यह आपकी विकास दर के बारे में जानकारी देता है और प्रत्येक ऑर्डर को अनुमान लगाने योग्य बनाता है। अनुक्रमिक संख्याओं के माध्यम से एक सरल लूप प्रमाणीकरण या अनुमति जांच के बिना सभी रिकॉर्ड पुनर्प्राप्त करता है। यह पैटर्न हर जगह दिखाई देता है—URL, डेटाबेस कुंजी, इनवॉइस नंबर और लेनदेन ID में—तब भी जब सिस्टम को किCAकल रिकॉर्ड को देखने के लिए प्रमाणीकरण की आवश्यकता होती है। रिपोर्टिंग और विश्लेषण में समस्या और बढ़ जाती है। एक हमलावर जो /orders/1, /orders/2, ला सकता है और /orders/10482 तक जारी रख सकता है, उसे आपके ऑर्डर इतिहास और रुझानों का व्यापक दृश्य प्राप्त होता है।
गणना और स्क्रैपिंग - कैसे अनुक्रमिक ID एक उजागर रिकॉर्ड को उन सभी में बदल देती हैं
अनुक्रमिक पैटर्न से रुझान का पता चलता है कि ऑर्डर कब आते हैं, किन उत्पादों का उल्लेख किया गया है और मूल्य निर्धारण में पैटर्न क्या है। एक पर्यवेक्षक को पता चलता है कि आपका व्यवसाय किस दर से बढ़ रहा है या सिकुड़ रहा है। वह जानकारी, जो केवल ID गणना से प्राप्त होती है, प्रतिस्पर्धी रणनीति को सूचित कर सकती है, सोशल इंजीनियरिंग का मार्गदर्शन कर सकती है या अन्य हमलों के लिए समय की जानकारी दे सकती है। एक्सपोज़र को खोजने में कुछ भी खर्च नहीं होता है और यह URL, ब्राउज़र इतिहास, कैश्ड पेज और सर्वर लॉग में दिखाई देता है। यह सैद्धांतिक नहीं है: प्रतिस्पर्धी खुफिया कंपनियां और जिज्ञासु इंजीनियर नियमित रूप से सार्वजनिक रूप से गणना योग्य ID से व्यावसायिक मेट्रिक्स निकालते हैं। ऑर्डर संख्याओं का एक नमूना डेटा एकत्र करने और बुनियादी विश्लेषण करने के लिए पर्याप्त रूप से प्रेरित किसी भी व्यक्ति के लिए उत्पादन दर और कुल मात्रा का खुलासा करता है।
एक पैराग्राफ में जर्मन टैंक समस्या - अनुक्रमिक संख्याओं के नमूने से कुल का अनुमान लगाना
गणना कुल मात्रा का अनुमान लगाने और अस्थायी पैटर्न को ट्रैक करने के लिए सांख्यिकीय विश्लेषण लागू करती है। यदि पहला ऑर्डर किसी ज्ञात तिथि पर हुआ और आप एक सप्ताह में फैले दस ऑर्डरों का साक्ष्य प्राप्त करते हैं, तो औसत अंतराल समग्र दर का अनुमान लगाता है। प्रतिस्पर्धी, निवेशक और हमलावर ID से परे किसी भी ग्राहक डेटा तक पहुंच के बिना आपका वेग प्राप्त कर सकते हैं। अनुक्रमिक पहचानकर्ता गारंटी देते हैं कि वर्तमान संख्या से अधिक प्रत्येक ID भविष्य के आदेशों की भविष्यवाणी करती है; किसी नमूने में न्यूनतम से कम प्रत्येक ID पुष्टि करती है कि आपका ऑपरेशन पहले छोटा था। ऐतिहासिक डेटा बिंदु विकास की समयरेखा बनाते हैं और पूर्वानुमान लगाने में सक्षम बनाते हैं। यही सिद्धांत सभी उद्योगों पर लागू होता है: वित्तीय लेनदेन, शिपिंग ऑर्डर, मेडिकल रिकॉर्ड और अनुक्रमिक ID को उजागर करने वाला कोई भी सिस्टम।
UUID क्या ठीक करते हैं - ID में अकल्पनीय संदर्भ और कोई विकास संकेत नहीं
यादृच्छिक रूप से उत्पन्न UUID में क्रिप्टोग्राफ़िक रूप से सुरक्षित स्रोत से उत्पन्न होने पर एन्ट्रापी का 122 bits होता है क्योंकि RFC 9562 संस्करण 4 के लिए निर्दिष्ट होता है। पहचानकर्ता अनुमान लगाने योग्य नहीं है, गिनती योग्य नहीं है और बाहरी पर्यवेक्षकों को विकास दर या मात्रा के बारे में कुछ भी नहीं बताता है। एक हमलावर जो /orders/9a1f4e2b-7c3e-4d1a-8a5f-1b2c3d4e5f60 को जानता है, वह अगले आदेश के UUID की भविष्यवाणी नहीं कर सकता है या किसी भी उचित विश्वास के साथ आपकी ऐतिहासिक ID के माध्यम से पीछे नहीं चल सकता है। UUID स्वयं एक ऐसा संदर्भ बन जाता है जो अद्वितीय लेकिन पूरी तरह से अपारदर्शी है। यादृच्छिक वितरण का अर्थ है कि एकाधिक क्वेरीज़ आपके API की निगरानी करने वाले बाहरी पर्यवेक्षकों को कोई पैटर्न, कोई प्रगति और कोई वेग जानकारी नहीं दिखाती हैं।
UUID क्या ठीक नहीं करते - एक अकल्पनीय ID प्राधिकरण नहीं है, और अस्पष्टता के लिए अभी भी इसके पीछे पहुंच जांच की आवश्यकता है
सार्वजनिक APआई में अनुक्रमिक ID को UUID से बदलना परिचालन रूप से सरल है और सिस्टम के बीच किसी जटिल समन्वय की आवश्यकता नहीं है। अपनी ऑर्डर तालिका में एक UUID कॉलम जोड़ें, प्रत्येक नए ऑर्डर के लिए एक कॉलम बनाएं, प्रतिक्रियाओं में UUID को उजागर करें और धीरे-धीरे संख्यात्मक कुंजी को हटा दें। आपके आंतरिक सिस्टम प्रदर्शन और सरलता के लिए पूर्णांक प्राथमिक कुंजियों का उपयोग जारी रख सकते हैं; केवल सार्वजनिक इंटरफ़ेस बदलता है. पुरानी अनुक्रमिक ID आपके स्वयं के संदर्भ या ऑडिट ट्रेल्स के लिए डेटाबेस में रहती है, लेकिन ग्राहक और तीसरे पक्ष केवल UUID देखते हैं। बाहरी दुनिया के सामने अपारदर्शी पहचानकर्ताओं को उजागर करते हुए मौजूदा सूचकांक प्रदर्शन को बनाए रखने के लिए यह दोहरी-कुंजी दृष्टिकोण एक सर्वोत्तम अभ्यास है।
कारगर उदाहरण - एक आंतरिक पूर्णांक कुंजी के साथ एक सार्वजनिक UUID कॉलम जोड़ना और केवल पहले वाले को उजागर करना
यह दृष्टिकोण वास्तविक प्राधिकरण से अलग है क्योंकि UUID पासवर्ड नहीं है और अस्पष्टता सुरक्षा नियंत्रण नहीं है। एक ग्राहक जिसके पास /orders/{their-uuid} तक वैध पहुंच है, उसे इसे देखने में सक्षम होना चाहिए, लेकिन /orders/{someone-elses-uuid} को अभी भी आपकी पहुंच जांच द्वारा अस्वीकार कर दिया जाना चाहिए। UUID ऑर्डर संख्या को आकस्मिक निरीक्षण से छुपाता है और गणना के माध्यम से सांख्यिकीय विश्लेषण को रोकता है, लेकिन आपका प्रमाणीकरण और प्राधिकरण तर्क आपके एप्लिकेशन कोड की जिम्मेदारी बना रहता है। सुरक्षा स्तरित है: UUID पहचानकर्ता में ही सूचना लीक को रोकता है, और पहुंच नियंत्रण लागू करता है जो उस पहचानकर्ता पर कार्य कर सकता है।
इसमें क्या शामिल नहीं है - यादृच्छिक कुंजियों का सूचकांक-प्रदर्शन ट्रेड-ऑफ़, एक अलग पोस्ट में चर्चा की गई है
परिचालन सीमा मायने रखती है क्योंकि UUID ID में सूचना रिसाव को ठीक करते हैं लेकिन पहुंच नियंत्रण तंत्र को प्रतिस्थापित नहीं करते हैं। यदि किसी ग्राहक के पास API कुंजी और पर्याप्त अनुमतियाँ हैं, तो भी वे आपके सिस्टम से अनुरोध कर सकते हैं। वे किस चीज़ तक पहुंच सकते हैं इसका दायरा आपके अनुमति मॉडल और भूमिका परिभाषाओं द्वारा निर्धारित होता है, ID प्रारूप से नहीं। UUID का लाभ पूरी तरह से यह है कि पहचानकर्ता किसी भी व्यक्ति के लिए वॉल्यूम, अनुक्रम और विकास डेटा प्रसारित करना बंद कर देता है जो इसे देख सकता है। एक अच्छी तरह से डिज़ाइन की गई प्रणाली API के प्रत्येक अनुरोध पर स्पष्ट पहुंच नियंत्रण जांच के साथ UUID अपारदर्शिता को जोड़ती है।
टेकअवे: सार्वजनिक संदर्भों को आंतरिक कुंजियों से अलग करें - ToolAcre जनरेटर सार्वजनिक पक्ष के लिए CSPRNG-समर्थित UUIDs की आपूर्ति करता है
एक व्यावहारिक प्रवास धीरे-धीरे दोनों प्रारूपों का समर्थन करके ध्वज दिवस से बचता है। यदि आप अपने एंडपॉइंट को संस्करणित करते हैं, तो v1 API पूर्णांक ID लौटाना जारी रख सकता है जबकि v2 UUID लौटाता है। ग्राहक समन्वित कटओवर की आवश्यकता के बिना अपनी गति से परिवर्तन करते हैं। आपकी आंतरिक डेटाबेस क्वेरीज़ अपरिवर्तित रहती हैं: वे अभी भी पूर्णांक ID द्वारा फ़िल्टर होती हैं क्योंकि आपकी अनुक्रमणिका उस कॉलम पर बनी होती हैं और आपकी विदेशी कुंजियाँ इसका संदर्भ देती हैं। केवल ग्राहकों को लौटाया गया डेटा बदलता है। ToolAcre UUID जनरेटर संस्करण-4 प्रारूप तैयार करता है जिसका आप उपयोग करेंगे; प्रत्येक आउटपुट एक सही RFC 9562 UUID है जो भंडारण, परिनियोजन और क्रमिक माइग्रेशन परिदृश्यों के लिए तैयार है।