"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > क्या `mysql_real_escape_string()` और `mysql_escape_string()` का उपयोग आपके एप्लिकेशन को सुरक्षित करने के लिए पर्याप्त है?

क्या `mysql_real_escape_string()` और `mysql_escape_string()` का उपयोग आपके एप्लिकेशन को सुरक्षित करने के लिए पर्याप्त है?

2024-12-22 को प्रकाशित
ब्राउज़ करें:598

Is Using `mysql_real_escape_string()` and `mysql_escape_string()` Enough to Secure Your Application?

क्या mysql_real_escape_string() और mysql_escape_string() ऐप सुरक्षा के लिए पर्याप्त हैं?

हालांकि ये फ़ंक्शन SQL इंजेक्शन और अन्य हमलों के खिलाफ कुछ सुरक्षा प्रदान कर सकते हैं , वे कुछ कमजोरियों को संबोधित करने में विफल रहते हैं।

SQL इंजेक्शन

Mysql_real_escape_string() यदि आप प्रश्नों के भीतर PHP चर को अनुचित तरीके से संभालते हैं तो अभी भी आपके एप्लिकेशन को SQL इंजेक्शन में उजागर कर सकते हैं। निम्नलिखित उदाहरण पर विचार करें:

$sql = "SELECT number FROM PhoneNumbers WHERE " . 
        mysql_real_escape_string($field) . " = " . mysql_real_escape_string($value);  

इस क्वेरी को एक हमलावर द्वारा अनधिकृत SQL कथनों को निष्पादित करने के लिए हेरफेर किया जा सकता है, क्योंकि mysql_real_escape_string() तालिका नाम, कॉलम नाम, या LIMIT फ़ील्ड को सुरक्षित करने के लिए डिज़ाइन नहीं किया गया है।

हमलों की तरह

Mysql_real_escape_string() LIKE शोषण को रोकने के लिए अपर्याप्त है। एक हमलावर सभी रिकॉर्ड वापस करने के लिए "%%" जैसे दुर्भावनापूर्ण मान इनपुट कर सकता है, जो संभावित रूप से संवेदनशील जानकारी से समझौता कर सकता है। शोषण, हमलावरों को दुर्भावनापूर्ण पात्रों को इंजेक्ट करने की इजाजत देता है जो भागने वाले तंत्र को बायपास करते हैं और मनमाने ढंग से एसक्यूएल निष्पादित करते हैं आदेश।

तैयार विवरण: एक व्यापक समाधान

अपने एप्लिकेशन को प्रभावी ढंग से सुरक्षित करने के लिए, mysql_real_escape_string() के बजाय तैयार कथन का उपयोग करने की अनुशंसा की जाती है। तैयार किए गए कथन SQL क्वेरी को उपयोगकर्ता द्वारा प्रदत्त मानों के साथ पैरामीटर के रूप में बाइंड करके निष्पादित करते हैं। यह मैन्युअल एस्केपिंग की आवश्यकता को समाप्त करता है और सुनिश्चित करता है कि केवल अधिकृत SQL निष्पादित किया जाता है।

यहां PHP में तैयार कथन का उपयोग करने का एक उदाहरण दिया गया है:$pdo = new PDO($dsn); $कॉलम = 'यूआरएल'; $मूल्य = 'http://www.example.com/'; $सीमा = 1; // खोज पैरामीटर कॉलम को मान्य करें। $validColumns = array('url', 'last_fetched'); यदि (!in_array($column, $validColumns)) { $column = 'id'; } $कथन = $pdo->तैयार करें('ग्रैबेडयूआरएल से यूआरएल चुनें'। 'कहाँ ' । $कॉलम। '=? ' . 'सीमा'। अंतराल($सीमा)); $कथन->निष्पादित(सरणी($मूल्य)); जबकि (($data = $statement->fetch())) { }

तैयार स्टेटमेंट अंतर्निहित डेटाबेस सर्वर की सुरक्षा सुविधाओं का लाभ उठाकर एक सक्रिय रक्षा तंत्र प्रदान करते हैं। वे आपके डेटा की अखंडता सुनिश्चित करते हुए, ज्ञात और अज्ञात दोनों हमलों के लिए स्वाभाविक रूप से प्रतिरोधी हैं।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3