क्या PDO तैयार क्वेरीज़ SQL-इंजेक्शन से बचाव के लिए पर्याप्त हैं?
सभी को नमस्कार! मैं एक शुरुआती PHP डेवलपर हूं और डेटाबेस के साथ काम करते समय सुरक्षा को समझने की कोशिश कर रहा हूं। मैंने कई लेख पढ़े हैं जहां कहा गया है कि PDO और तैयार क्वेरीज़ (prepared statements) SQL-इंजेक्शन के लिए एक चांदी की गोली हैं। लेकिन कुछ बिंदु मुझे भ्रमित करते हैं।
यह मेरे कोड का एक उदाहरण है:
```php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->execute([':username' => $_GET['username']]);
$user = $stmt->fetch();
```
मुझे लगता है कि यह सुरक्षित है, क्योंकि मैं प्लेसहोल्डर का उपयोग कर रहा हूं। लेकिन फिर मैंने एक पुराने प्रोजेक्ट में यह कोड देखा:
```php
$pdo->query("SELECT * FROM users WHERE id = " . $_GET['id']);
```
और मुझे आश्चर्य हुआ: क्या होगा अगर मैं गलती से किसी स्थान पर तैयार क्वेरीज़ का उपयोग करना भूल जाऊं? या अगर मैं PDO का उपयोग करता हूं, लेकिन तैयार क्वेरीज़ के इम्यूलेशन को गलत तरीके से कॉन्फ़िगर करता हूं? क्या कोई हमलावर PDO सुरक्षा को बायपास कर सकता है?
मैंने डायनामिक क्वेरीज़ के बारे में भी सुना है