Avatar ·

هل تكفي استعلامات 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(); ``` أعتقد أن هذا آمن لأنني أستخدم placeholders. لكن بعد ذلك رأيت هذا الكود في مشروع قديم: ```php $pdo->query("SELECT * FROM users WHERE id = " . $_GET['id']); ``` وأصبحت مهتمًا: ماذا لو نسيت استخدام الاستعلامات المحضرة في مكان ما؟ أو إذا كنت أستخدم PDO لكني أضبط محاكاة الاستعلامات المحضرة بشكل خاطئ؟ هل يمكن للمهاجم تجاوز حماية PDO؟ كما سمعت عن الاستعلامات الديناميكية