Avatar ·

mysql_real_escape_string() को बायपास करने वाला SQL इंजेक्शन — कैसे बचें?

सभी को नमस्कार! मैं एक शुरुआती PHP डेवलपर हूँ, और मुझे एक सवाल परेशान कर रहा है। मैंने पढ़ा था कि `mysql_real_escape_string()` फंक्शन (या इसका एनालॉग `mysqli_real_escape_string()`) SQL इंजेक्शन से सुरक्षा के लिए विश्वसनीय माना जाता है। लेकिन हाल ही में मैं Stack Overflow पर एक पुरानी पोस्ट पर ठोकर खाई, जहाँ दावा किया गया है कि इसे बायपास किया जा सकता है। अपने प्रोजेक्ट में मैं पुराने `mysql_*` एक्सटेंशन का उपयोग कर रहा हूँ (मुझे पता है कि यह deprecated है, लेकिन प्रोजेक्ट पुराना है, और अभी तक सब कुछ PDO पर रीराइट करना संभव नहीं है)। यहाँ मेरे कोड का एक उदाहरण है: ```php $username = mysql_real_escape_string($_POST['username']); $password = mysql_real_escape_string($_POST['password']); $query = "SELECT * FROM users WHERE username='$username' AND password='$password'"; $result = mysql_query($query); ``` मैंने भोलेपन से सोचा था कि कोट्स जैसे कैरेक्टर्स को एस्केप करना पर्याप्त है। लेकिन उस चर्चा में एन्कोडिंग, मल्टीबाइट कैरेक्टर्स और GBK के साथ किसी जादू के बारे में बात की गई थी। मैं इस कमजोरी का सार पूरी तरह से नहीं समझ पाया। `mysql_real_escape_string()` को वास्तव में कैसे बायपास किया जा सकता है? और सबसे महत्वपूर्ण बात