حقن SQL: كيف ولماذا يعمل
افهم حقن SQL التقليدي والأعمى وخارج النطاق، ولماذا تمنعه الاستعلامات ذات المعلمات
حقن SQL: كيف ولماذا يعمل درس مجاني في Cyber Security Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cyber Security Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cyber Security Academy 4 دروس في المجموع.
ما حقن SQL؟
يحدث حقن SQL (SQLi) عندما يُدرج إدخال يقدمه المستخدم في استعلام SQL من دون تنظيف مناسب، ما يسمح للمهاجمين بالتلاعب بمنطق الاستعلام. وتُعدّ هذه الثغرة من أقدم ثغرات الويب وأكثرها ضررًا.
كيف يعمل حقن SQL
يُجري نموذج تسجيل الدخول الاستعلام التالي: SELECT * FROM users WHERE username='INPUT' AND password='INPUT'
إذا أدخل المهاجم ' OR 1=1-- في حقل اسم المستخدم، يصبح الاستعلام: SELECT * FROM users WHERE username='' OR 1=1--' AND password='...' — ما يؤدي إلى إرجاع جميع المستخدمين.
أنواع حقن SQL
أنواع SQLi:
- داخل النطاق: تُعاد النتائج مباشرةً في الاستجابة (تقليدي، أو قائم على الأخطاء)
- أعمى قائم على القيم المنطقية: لا يوجد إخراج مباشر؛ تُستنتج البيانات من الاستجابات الصحيحة أو الخاطئة
- أعمى قائم على الوقت: تُستنتج البيانات من تأخر الاستجابة (
SLEEP(5)) - خارج النطاق: تُسرَّب البيانات عبر طلبات DNS أو HTTP
الحقن القائم على UNION
تلحق هجمات UNION نتائج استعلامات يتحكم فيها المهاجم:
-- Discover number of columns:
id=1 ORDER BY 3--
-- Extract data:
id=1 UNION SELECT username,password,NULL FROM users--الحقن القائم على الأخطاء
تكشف رسائل الخطأ بنية قاعدة البيانات. يُدخل المهاجم بيانات تؤدي إلى خطأ في الصياغة، فتسرّب رسالة الخطأ الناتجة أسماء الجداول أو الأعمدة أو إصدار قاعدة البيانات. عطّل رسائل الخطأ التفصيلية في بيئة الإنتاج.
حقن SQL الأعمى
عندما لا يظهر أي إخراج، يستخدم المهاجمون شروطًا منطقية:
-- If admin exists, page loads normally:
id=1 AND (SELECT COUNT(*) FROM users WHERE username='admin')=1--
-- Time-based:
id=1; IF(1=1) WAITFOR DELAY '0:0:5'--sqlmap: أتمتة حقن SQL
تؤتمت sqlmap عملية اكتشاف حقن SQL واستغلاله. ويمكنها تفريغ قواعد البيانات وقراءة الملفات، بل وتنفيذ أوامر نظام التشغيل إذا كان لدى مستخدم قاعدة البيانات امتيازات كافية.
sqlmap -u "http://target.com/page?id=1" --dbs
sqlmap -u "http://target.com/page?id=1" -D webapp -T users --dumpمنع حقن SQL: الاستعلامات ذات المعلمات
الدفاع الأساسي هو الاستعلامات ذات المعلمات (العبارات المُعدّة مسبقًا). يُمرَّر إدخال المستخدم كمعلمة، ولا يُلصق مطلقًا داخل سلسلة الاستعلام:
# Python (safe):
cursor.execute("SELECT * FROM users WHERE username = %s", (username,))
# Node.js (safe):
pool.query("SELECT * FROM users WHERE id = $1", [userId])الحماية باستخدام ORM
يمنع استخدام ORM (SQLAlchemy وHibernate وSequelize) حقن SQL عادةً، لأن الاستعلامات تُبنى باستخدام تجريدات آمنة. لكن أساليب الاستعلام الخام (execute() وquery()) التي تستخدم استيفاء السلاسل تتجاوز حماية ORM.
التحقق من الإدخال وWAF
وسائل دفاع إضافية:
- تحقّق من أنواع الإدخال واسمح بالقوائم الموثوقة فقط (الأعداد الصحيحة، وعناوين البريد الإلكتروني)
- استخدم جدار حماية لتطبيقات الويب (WAF) لاكتشاف أنماط الحقن
- استخدم حسابات قواعد بيانات وفق مبدأ الحد الأدنى من الامتيازات (من دون DROP، ومن دون UNION في الاستعلامات للقراءة فقط)
- استخدم الإجراءات المخزنة (تقلل مساحة التعرض، لكنها ليست حلًا كاملًا)
أثر حقن SQL
يمكن أن يؤدي نجاح حقن SQL إلى: تفريغ قاعدة البيانات بالكامل، وتجاوز المصادقة، وتعديل البيانات أو حذفها، وقراءة ملفات الخادم (LOAD_FILE)، وكتابة web shells، وتنفيذ أوامر نظام التشغيل عبر xp_cmdshell (MSSQL).
اختبار سريع: حقن SQL
ما الدفاع الأساسي ضد حقن SQL؟
مراجعة الدرس
يُجري حقن SQL معالجة استعلامات قاعدة البيانات من خلال إدخال المستخدم غير المُنقّى. وتشمل أنواع الهجمات الحقن التقليدي، والحقن الأعمى القائم على القيم المنطقية، والحقن القائم على الوقت، والحقن القائم على UNION. ويتمثل الدفاع الأساسي في استخدام الاستعلامات ذات المعاملات — لا تُلحِق إدخال المستخدم أبداً بسلسلة SQL. استخدم ORM بحذر، وطبّق مبدأ أقل صلاحية على حسابات قاعدة البيانات، وعطّل رسائل الخطأ التفصيلية.
الأسئلة الشائعة
هل درس «حقن SQL: كيف ولماذا يعمل» مجاني؟
نعم — نص درس «حقن SQL: كيف ولماذا يعمل» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cyber Security Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cyber Security Academy 4 دروس في المجموع.
ماذا ستتعلم في «حقن SQL: كيف ولماذا يعمل»؟
افهم حقن SQL التقليدي والأعمى وخارج النطاق، ولماذا تمنعه الاستعلامات ذات المعلمات تتمرن على Cyber Security Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Cyber Security Academy؟
لا تُشترط خبرة سابقة. Cyber Security Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «حقن SQL: كيف ولماذا يعمل»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Cyber Security Academy هذا؟
نعم. كل درس في Cyber Security Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- حقن SQL: كيف ولماذا يعمل
- البرمجة النصية عبر المواقع (XSS)
- تزوير الطلبات عبر المواقع (CSRF)
- سوء تهيئة الأمان والخدمات المكشوفة