क्या 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 email = :email');
$stmt->execute(['email' => $_POST['email']]);
$user = $stmt->fetch();
?>
यह सब सुरक्षित लगता है। लेकिन मैंने चेतावनियां देखी हैं कि PDO हमेशा सुरक्षा नहीं करता, खासकर अगर गलत तरीके से उपयोग किया जाए। उदाहरण के लिए, अगर मैं query() के साथ डेटा डालूं या अगर मैं गलत type के साथ bindParam() का उपयोग करूं तो क्या होगा? और उन मामलों के बारे में क्या जब मैं डायनामिक रूप से क्वेरी बनाता हूं, जैसे कि sorting या LIMIT जोड़ना? क्या कोई खतरे हैं?
शायद, कुछ और भी है।