रिसोर्स · 37

एक GraphQL API सुरक्षित करें: ऑथराइज़ेशन, क्वेरी कॉस्ट और सबूत

ऑब्जेक्ट और फ़ील्ड राइट्स, बाउंड सर्वर वर्क और टेस्ट डिनायल पाथ लागू करें।

अपडेटेड · 5 min

पुस्तकालय में इंटरनेट और तकनीक की किताबें चित्रण · काल्पनिक दृश्य

यह गाइड क्या पाने में मदद करती है

  • एक्सपोज़्ड स्कीमा को मैप करें
  • परमिशन का इस्तेमाल करें
  • बाउंड क्वेरी कॉस्ट
  • डिनायल वेरिफ़ाई करें

जल्दी से चेक करें

  • क्या एक अकाउंट दूसरे अकाउंट का ऑब्जेक्ट पढ़ सकता है?
  • क्या कोई सेंसिटिव फ़ील्ड अपने पेरेंट के एक्सेस डिसीजन को फ़ॉलो करता है?
  • डेप्थ, एलियास और पेजिनेशन की कुल कॉस्ट क्या है?
  • एरर से कौन सी डिटेल्स लीक होती हैं?
  • डिनायल और अब्यूज़ को कौन देखता है?

स्टेप-बाय-स्टेप तरीका

  1. 1

    इन्वेंटरी ऑपरेशन

    टाइप, फ़ील्ड, म्यूटेशन, रोल, ऑब्जेक्ट ओनर और सेंसिटिव डेटा की लिस्ट बनाएं। मौजूदा क्लाइंट क्वेरी और कम इस्तेमाल होने वाले पाथ शामिल करें।

    डिलीवरेबल: ऑपरेशन, रोल, ऑब्जेक्ट और फ़ील्ड मैट्रिक्स।

  2. 2

    हर एक्सेस डिसीजन को टेस्ट करें

    अलग-अलग टेस्ट अकाउंट बनाएं और नेस्टेड ऑब्जेक्ट सहित ऑब्जेक्ट ID स्वैप करें। डेटा वापस करने से पहले रिज़ॉल्वर को ऑथराइज़ेशन लागू करना होगा।

    डिलीवरेबल: रिप्रोड्यूसिबल अलाउड और डिनायल केस।

  3. 3

    बाउंड सर्वर वर्क

    फील्ड्स और कलेक्शन की एक्चुअल कॉस्ट मापें। डेप्थ, ब्रेड्थ, एलियास, पेजिनेशन, बैचिंग और टाइम को एक साथ टेस्ट करें, फिर सही लिमिट सेट करें।

    डिलीवरेबल: कॉस्ट पॉलिसी और एडवर्सरियल क्वेरी सेट।

  4. 4

    गैर-ज़रूरी एक्सपोज़र कम करें

    कॉन्टेक्स्ट के लिए इंट्रोस्पेक्शन पर फैसला करें, इंटरनल एरर डिटेल छिपाएं और उन फील्ड्स को हटा दें जो क्लाइंट्स की ज़रूरत से ज़्यादा दिखाते हैं।

    डिलीवरेबल: पब्लिक कॉन्फ़िगरेशन और एरर रिस्पॉन्स का रिव्यू किया गया।

  5. 5

    कंट्रोल के साथ ऑब्ज़र्व करें

    सीक्रेट्स और सेंसिटिव आर्गुमेंट्स को छोड़कर यूज़फुल टेक्निकल आइडेंटिटी, ऑपरेशन, कॉस्ट, डिनायल और कोरिलेशन लॉग करें। अलर्ट ओनरशिप असाइन करें।

    डिलीवरेबल: डैशबोर्ड और इन्वेस्टिगेशन प्रोसीजर।

  6. 6

    बदलाव के बाद रिप्ले करें

    जब कोई फील्ड, रोल या क्लाइंट बदलता है, तो ऑथराइज़ेशन और लोड केस रिपीट करें। पुरानी क्वेरीज़ चेक करें जो अब बदले हुए ग्राफ़ पर चलती हैं।

    डिलीवरेबल: रिग्रेशन रिज़ल्ट और रिलीज़ का फ़ैसला।

मैनेजमेंट इंडिकेटर

इंडिकेटरयह क्या मापता हैपहला एक्शन
एक्सेसऑब्जेक्ट और फ़ील्ड केस उम्मीद के मुताबिक मना कर दिए गएरिज़ॉल्वर ठीक करें
कॉस्टपॉलिसी में शामिल भारी क्वेरीज़फ़ील्ड और लिमिट एडजस्ट करें
गलतियाँइंटरनल डिटेल के बिना पब्लिक रिस्पॉन्सएक्सपोज़्ड डिटेल कम करें
रिग्रेशनबदलाव के बाद क्लाइंट ऑपरेशन दोबारा चलाए गएअनजाने में हुई खराबी को ब्लॉक करें

आम गलतियाँ

  • सिर्फ़ एंडपॉइंट एक्सेस पर भरोसा करें
  • डेप्थ को लिमिट करें लेकिन ब्रेड्थ को नज़रअंदाज़ करें
  • नेस्टेड-फ़ील्ड ऑथराइज़ेशन को भूल जाएं
  • सेंसिटिव डेटा के साथ आर्गुमेंट लॉग करें

अक्सर पूछे जाने वाले सवाल

क्या GraphQL आम API ऑथराइज़ेशन हटाता है?

नहीं। हर ऑब्जेक्ट और फ़ील्ड एक्सेस के लिए अभी भी एक आइडेंटिटी और कॉन्टेक्स्ट बेस्ड फ़ैसले की ज़रूरत होती है।

क्या इंट्रोस्पेक्शन को डिसेबल करना काफ़ी है?

नहीं। यह स्कीमा एक्सपोज़र को कम कर सकता है लेकिन एक्सेस या क्वेरी कॉस्ट को ठीक नहीं करता है।

क्या डेप्थ लिमिट काफ़ी है?

नहीं। एलियास, ब्रेड्थ, लिस्ट और फ़ील्ड-स्पेसिफिक कॉस्ट भी मायने रखती हैं।

ऑफ़िशियल रेफ़रेंस

रेफ़रेंस इस तरीके को सपोर्ट करते हैं। अपने कॉन्टेक्स्ट के हिसाब से चेक को एडजस्ट करें; वे सर्टिफ़िकेशन नहीं हैं। ओरिजिनल रेफ़रेंस टाइटल और सोर्स डॉक्यूमेंट दूसरी भाषा में हो सकते हैं।