SQL इंजेक्शन से सुरक्षा के प्रयास में, एक डेवलपर को Python 2.5 के साथ SQLite3 का उपयोग करते समय एक त्रुटि का सामना करना पड़ा। अनुशंसित "?" का प्रयोग करते समय इंजेक्शन को रोकने के लिए पैरामीटर प्रतिस्थापन, उन्हें निम्नलिखित दुविधा का सामना करना पड़ा:
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 8 supplied.
यह मुद्दा डेटाबेस के प्रारंभिक निर्माण से उत्पन्न हुआ प्रतीत होता है, जिसमें आठ बाइंडिंग शामिल थे। हालाँकि, प्रत्येक आइटम नाम के लिए कम सुरक्षित "%s" प्रतिस्थापन का उपयोग करने से समस्या हल हो गई।
for item in self.inventory_names: self.cursor.execute("SELECT weight FROM Equipment WHERE name = '%s'" % item) self.cursor.close()
इस उलझन का समाधान यह समझने में निहित है कि कर्सर.execute() विधि को अपने दूसरे पैरामीटर के रूप में एक अनुक्रम की आवश्यकता होती है। इस उदाहरण में, डेवलपर एक स्ट्रिंग प्रदान कर रहा था जो आठ वर्ण लंबी थी। इसे ठीक करने के लिए, निम्नलिखित कोड संशोधन लागू किया जाना चाहिए:
self.cursor.execute("SELECT weight FROM Equipment WHERE name = ?", [item])
इस पैरामीटर के अनुरूप होकर विनिर्देश, समस्या को प्रभावी ढंग से संबोधित किया जा सकता है, जिससे SQLite3 से सुरक्षित और कुशल डेटा पुनर्प्राप्ति की अनुमति मिलती है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3