آخر تحديث:

كيف يعمل الهجوم؟ #
أغلب المواقع تحفظ محتواها ومستخدميها في قاعدة بيانات MySQL أو MariaDB. عندما يبحث الزائر عن كلمة، يبني الموقع استعلاماً فيه هذه الكلمة. المشكلة تبدأ عندما يضع الكود ما كتبه الزائر داخل الاستعلام كما هو دون فحص.
بدل كلمة بحث عادية، يكتب المهاجم نصاً يغيّر معنى الاستعلام، مثل:
' OR 1=1 --
هذا النص يجعل الشرط صحيحاً دائماً، فقد يعرض الموقع كل السجلات أو يسمح بالدخول دون كلمة مرور. وبصيغ أعقد يستطيع المهاجم قراءة جداول المستخدمين وكلمات المرور المشفرة.
ماذا يستطيع المهاجم أن يفعل؟ #
أين تكون الثغرة عادة؟ #
- إضافة أو قالب ووردبريس قديم فيه ثغرة حقن معروفة.
- كود مكتوب يدوياً يضع قيم الروابط أو النماذج مباشرة داخل الاستعلام.
- سكربتات قديمة غير محدّثة، مثل منتديات أو أنظمة متاجر قديمة.
كيف تحمي موقعك؟ #
- حدّث ووردبريس والإضافات والقوالب: أغلب ثغرات الحقن في ووردبريس تكون في إضافات قديمة، والتحديث يغلقها. افحص موقعك بأداة فحص نقاط الضعف في ووردبريس.
- للمبرمجين: استخدم الاستعلامات المجهّزة: لا تدمج قيم الزائر في نص الاستعلام. في ووردبريس استخدم
$wpdb->prepare()، وفي PHP استخدم PDO مع المعاملات. - صلاحيات محدودة لمستخدم قاعدة البيانات: مستخدم قاعدة بيانات الموقع يحتاج صلاحيات موقعه فقط، ولكل موقع مستخدم مستقل.
- لا تعرض رسائل أخطاء قاعدة البيانات للزوار: رسائل الخطأ التفصيلية تساعد المهاجم على فهم بنية الجداول. اترك وضع التصحيح مطفأً في الموقع المنشور.
- جدار حماية للويب: قواعد ModSecurity تتعرّف على أنماط الحقن المعروفة وتوقف الطلب قبل وصوله إلى الموقع.
- نسخ احتياطية لقاعدة البيانات: إذا عُدّلت البيانات أو حُذفت تحتاج نسخة نظيفة. اقرأ أهمية النسخ الاحتياطي.
// خطأ: قيمة الزائر داخل الاستعلام مباشرة
$wpdb->get_results("SELECT * FROM wp_posts WHERE post_title = '$_GET[q]'");
// صحيح: استعلام مجهّز
$wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->posts} WHERE post_title = %s", $_GET['q']));
كيف نحمي موقعك في حياة هوست؟ #
- قواعد ModSecurity وImunify360 تصد أنماط حقن SQL المعروفة على مستوى السيرفر.
- CloudLinux يعزل كل حساب، فلا تصل ثغرة في موقع آخر إلى قاعدة بيانات موقعك.
- أداة WP Toolkit في cPanel تنبهك إلى الإضافات التي فيها ثغرات معروفة.
أسئلة شائعة #
هل ووردبريس نفسه معرض لحقن SQL؟
نواة ووردبريس المحدّثة تستخدم استعلامات آمنة. أغلب الثغرات تكون في الإضافات والقوالب القديمة، لذلك التحديث هو أهم خطوة.
كيف أعرف أن موقعي تعرض لحقن SQL؟
من العلامات: مستخدم مدير جديد لا تعرفه، أو محتوى أو روابط غريبة داخل المقالات، أو تغيير في الطلبات والأسعار. اقرأ علامات اختراق الموقع.
هل جدار الحماية يغني عن تحديث الكود؟
لا. الجدار يوقف الأنماط المعروفة، لكن إصلاح الكود والتحديث يغلقان الثغرة نفسها.