كيف تمنع Prepared Statements حقن SQL؟

سهلقراءة دقيقةآخر تحديث 3 أكتوبر 2026

SQL قواعد البيانات

الإجابة

يحدث حقن SQL عندما تدخل بيانات غير موثوقة في بناء نص الاستعلام بطريقة تسمح بتغيير معناه البرمجي. فقد يدمج التطبيق نصًا أدخله المستخدم داخل شرط بحث، ثم يرسله إلى قاعدة البيانات كجزء من الأمر نفسه. المشكلة الأساسية هي اختلاط البيانات ببنية الاستعلام.

تعالج الاستعلامات المحضرة هذه المشكلة عند استخدامها بصورة صحيحة، إذ تكتب بنية الاستعلام مع مواضع معاملات، ثم تربط القيم بهذه المواضع بصورة منفصلة. تصبح القيمة المدخلة بيانات للمقارنة أو التخزين، ولا تفسر كلماتها وعلاماتها على أنها شروط جديدة. مجرد تحضير نص سبق دمجه بمدخل غير موثوق لا يحقق هذا الفصل.

مثال

CREATE TABLE customers (
  id INT PRIMARY KEY,
  name VARCHAR(100)
);
PREPARE find_customer FROM
  'SELECT id FROM customers WHERE name = ?';
SET @name = 'Nour';
EXECUTE find_customer USING @name;
DEALLOCATE PREPARE find_customer;

يبقى التحقق من المدخلات مفيدًا لقواعد العمل، مثل طول الاسم المسموح. لكنه يؤدي دورًا مختلفًا عن فصل البيانات عن الكود. كذلك لا يحل إخفاء رسائل الخطأ أو تشفير الاتصال مشكلة تركيب الاستعلام غير الآمن.

باختصار: استخدم مواضع معاملات واربط القيم منفصلة حتى تظل مدخلات المستخدم بيانات داخل الاستعلام.

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر فهمك

ما الإجراء الأساسي لمنع قيمة اسم يدخلها المستخدم من تغيير بنية استعلام البحث؟