/ / पीडीओ में तैयार वक्तव्य वास्तव में सुरक्षा में वृद्धि करते हैं? - PHP, सुरक्षा, पीडीओ

पीडीओ में तैयार वक्तव्य वास्तव में सुरक्षा में वृद्धि करते हैं? - PHP, सुरक्षा, पीडीओ

मुझे आश्चर्य है कि पीडीओ के उन तैयार बयानवास्तव में सुरक्षा बढ़ाएं, या यदि वे क्वेरी में केवल "सस्ते" टेक्स्ट-प्रतिस्थापन हैं। वास्तव में तैयार बयान का बिंदु यह है कि जो कुछ भी पैरामीटर के रूप में डाला जाता है, उसे निर्देशों के भाग के रूप में डीबीएमएस द्वारा पार्स नहीं किया जाएगा, इसलिए एक पैरामीटर

""; DROP TABLE foobar;"

इसका कोई प्रभाव नहीं है और क्वेरी को तोड़ नहीं देता है। क्या कोई इसे विस्तार से जानता है? मैंने एसक्यूएल इंजेक्शन को रोकने के लिए तैयार बयानों के साथ पीडीओ का उपयोग करने का विचार किया। यह पता चला है कि उन्हें उपयोग करना मुश्किल है (और कम से कम मेरी स्थानीय मशीन पर भी काम नहीं करते हैं), इसलिए मैं पीडीओ के साथ अधिक समय बर्बाद करने से पहले इसे खोजना चाहता हूं ;-)

उत्तर:

उत्तर № 1 के लिए 11

एक तैयार कथन बनाना पार्सिंग के लिए सर्वर से क्वेरी-साथ-वाइल्डकार्ड भेजता है, और उस कथन को कॉल करने के लिए टोकन देता है।

एक कॉल में केवल डेटा भेजना शामिल हैहर पैरामीटर। इसका मतलब है कि डेटा का कोई विश्लेषण नहीं होगा (क्योंकि यह एक क्वेरी स्ट्रिंग का हिस्सा नहीं है), और जब क्वेरी को तैयार किया गया है तो क्वेरी की संरचना तय की जाती है और इंजेक्शन द्वारा बदला नहीं जा सकता है।

तो, हां, एक तैयार बयान निश्चित रूप से सुरक्षा को बढ़ाता है।

इसका मतलब यह भी है कि यदि आप कई अनुरोधों के लिए तैयार कथन का पुन: उपयोग करते हैं तो आपको पार्सिंग ओवरहेड नहीं लेना पड़ता है।


जवाब के लिए 3 № 2

हां, वे सुरक्षा बढ़ाते हैं। पीडीओ या MySQLi भी PHP में नियमित MYSQL विधियों बनाम गति बढ़ाता है क्योंकि डेटा एक अधिक कॉम्पैक्ट रूप में पारित किया जाता है।