2015-08-30 5 views
7

GraphQL हाल ही में जारी किया गया था, और ऐसा लगता है कि यह आपके प्रश्न क्लाइंट-साइड लिखने को प्रोत्साहित करता है।ग्राफिकल क्वेरी क्लाइंट-साइड लिखना सुरक्षित क्यों है?

  1. क्या यह है कि ग्राफिकल क्वेरी क्लाइंट-साइड लिखना सुरक्षित है, लेकिन SQL क्वेरी नहीं है?
  2. क्या ग्राफQL इंजेक्शन के अधीन नहीं है?
  3. यदि आपके प्रश्न क्लाइंट-साइड के लिए इतना उपयोगी है, तो क्यों SQL का संस्करण इंजेक्शन के अधीन नहीं है?

उत्तर

11

चूंकि यह उन उपयोगकर्ताओं द्वारा उत्तर नहीं दिया गया था जिन्होंने इसे स्लेक चैनल में उत्तर दिया, मैं उनके उत्तर पोस्ट करूंगा।

  1. ग्राफ़क्यूएल क्वेरीज स्कीमा के विरुद्ध मान्य हैं जो क्लाइंट को डेटा का खुलासा करने के लिए स्पष्ट रूप से बनाया गया था। एसक्यूएल डीबी स्कीमा संरचना के अलावा किसी अन्य चीज के खिलाफ आपकी क्वेरी को मान्य नहीं करता है।
  2. सिद्धांत में आपके ग्राफ़क्यूएल एंडपॉइंट में उपयोगकर्ता को सत्यापित करने के लिए किसी प्रकार की सुरक्षा है, ताकि उपयोगकर्ता को उनकी क्वेरी के शुरुआती बिंदु पर डेटा से पूछने की अनुमति दी जा सके। एक बार वे ग्राफ़ आधारित स्कीमा के अंदर हैं, अनुमतियां ग्राफ़क्यूएल स्कीमा परिभाषा के निहित हैं, और इंजेक्शन कुछ भी पूरा नहीं करेगा।
  3. एसक्यूएल का एक संस्करण बनाना जो इंजेक्शन के अधीन नहीं है, इसमें कुछ मान्यताओं को शामिल किया जाएगा जो ग्राफ़क्यूएल करता है। कुछ प्रकार के सत्यापन कि सभी अनुरोधित डेटा/उत्परिवर्तन की अनुमति है। चैट में उद्धृत के रूप में, "इंजेक्शन एसक्यूएल के लिए निहित समस्या नहीं है"।

जवाब चार्ली और GraphQL/# सामान्य स्लैक चैट से samwgoldman में जमा।

+2

मैं जोड़ूंगा कि ग्राफ़क्यूएल क्वेरी वेरिएबल्स "इंजेक्शन" मुद्दों की संभावना को खत्म कर देगा। के समान "?" SQLite में, ग्राफ़क्यूएल क्वेरी वेरिएबल्स आपको क्वेरी के भीतर semantically चर डालने की अनुमति देता है और ग्राफक्ल्यू क्वेरी को चलाने से पहले मान्य करेगा कि चर के लिए प्रदत्त मान वैध हैं। –

+0

यहां ग्राफक्लुएल और सुरक्षा/इंजेक्शन पर एक अच्छा लेख खोजें: https://mikewilliamson.wordpress.com/2016/09/15/graphql-and-security/ – joost

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