SQL-इंजेक्शन जो mysql_real_escape_string() को बायपास करता है — कैसे बचाव करें?
सभी को नमस्कार! मैं एक शुरुआती PHP डेवलपर हूँ और एक बहुत अजीब स्थिति का सामना किया है। कई फ़ोरम पर लिखा है कि `mysql_real_escape_string()` फ़ंक्शन SQL-इंजेक्शन से एक विश्वसनीय सुरक्षा है, और मैं हमेशा इसका उपयोग करता था। लेकिन हाल ही में पढ़ा कि इसे बायपास करने के तरीके हैं, और इसने मुझे बहुत डरा दिया।
मेरे पास उपयोगकर्ता प्रमाणीकरण के लिए एक सरल कोड है:
```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 या SJIS) का उपयोग किया जाता है, तो ऐसे वर्ण अनुक्रम चुने जा सकते हैं जो एस्केपिंग स्लैश को "खा" जाते हैं और मनमाना SQL कोड डालने की अनुमति देते हैं। क्या यह सच है? यह वास्तव में कैसे काम करता है? और सबसे महत्वपूर्ण बात — अब मैं अपनी क्वेरीज़ को सही तरीके से कैसे सुरक्षित करूँ? क्या मुझे पूरी तरह से अलग दृष्टिकोण अपनाना होगा?