जहां तक इंजेक्शन की समस्या है, जैसे SQL के साथ, जोखिम काफी कम है... यद्यपि सैद्धांतिक रूप से एक अज्ञात हमले वेक्टर के माध्यम से संभव है।
डेटा संरचनाएं और प्रोटोकॉल एक डोमेन-विशिष्ट-भाषा के भीतर बच गए मूल्यों का लाभ उठाने के बजाय बाइनरी और एपीआई संचालित होते हैं। मूल रूप से, आप केवल पार्सर को अंत में ";db.dropCollection ()" जोड़ने के लिए धोखा नहीं दे सकते।
यदि इसका उपयोग केवल प्रश्नों के लिए किया जाता है, तो यह शायद ठीक है... लेकिन मैं आपको अभी भी एक छोटे से सत्यापन का उपयोग करने के लिए सावधान करूंगा:
- केवल अल्फ़ान्यूमेरिक वर्ण सुनिश्चित करें (फ़िल्टर करें या नल को अमान्य करें और कुछ भी जो आप सामान्य रूप से स्वीकार नहीं करेंगे)
- प्रति शब्द अधिकतम लंबाई (जैसे 255 वर्ण) लागू करें
- पूरी क्वेरी की अधिकतम लंबाई लागू करें
- स्ट्रिप विशेष "$" से शुरू होने वाले पैरामीटर नाम, जैसे "$कहां" और ऐसे
- नेस्टेड सरणियों/दस्तावेज़ों/हैश की अनुमति न दें... केवल स्ट्रिंग्स और इनट्स
साथ ही, ध्यान रखें, एक खाली क्वेरी सबकुछ लौटाती है। आप उस वापसी मूल्य पर एक सीमा चाहते हैं। :)पी>