كيف يعمل
تخيل صفحة بحث تبني استعلامها بدمج النص المكتوب في سلسلة SQL أطول. فإذا كتب الزائر نصا يحتوي على صيغة SQL، فلن تميز قاعدة البيانات بين ما هو تعليمة المطور وما هو بيانات، فتنفذ الكل. وبذلك يكون الزائر قد أعاد كتابة الاستعلام. هذا المثال افتراضي.
لماذا ما زال يحدث
هو معروف منذ زمن طويل، ومع ذلك يظهر: في الشيفرة القديمة، وفي استعلامات التقارير المكتوبة يدويا، وفي كل موضع تجاوز فيه المطور إطار العمل «هذه المرة فقط». وهو يندرج تحت محور الحقن في قائمة OWASP Top 10.
كيف تمنعه
- استخدم الاستعلامات المعلمة، وتعرف أيضا بالعبارات المجهزة. يسافر نص الاستعلام والقيم منفصلين، فلا تكون المدخلات إلا بيانات.
- استخدم أداة ORM أو أداة بناء الاستعلامات بشكل صحيح. فمنافذ الاستعلام الخام فيها خطرة حين تدخل متغيرات في النص.
- استخدم قائمة سماح لما لا يصلح معاملا، كاسم عمود أو اتجاه الترتيب، بمطابقته مع قائمة ثابتة.
- امنح التطبيق حساب قاعدة بيانات محدود الصلاحيات، حتى لا يتيح العيب حذف الجداول أو قراءة كل شيء.
- تحقق من المدخلات من حيث النوع والطول كطبقة ثانية، لا كدفاع وحيد.
أخطاء شائعة
- محاولة تنظيف المدخلات بحذف علامات الاقتباس. المرشحات يمكن الالتفاف عليها، أما المعاملات فلا.
- الوثوق بفحص يجري في المتصفح فقط.
- إظهار أخطاء قاعدة البيانات الخام للمستخدمين، فهذا يسلم المهاجم خريطة.
- افتراض أن الأدوات الداخلية وصفحات الإدارة لا تحتاج العناية نفسها.
مصطلحات ذات صلة
تبحث مراجعة الشيفرة الآمنة عن الاستعلامات المبنية بدمج النصوص، ويحاول اختبار الاختراق استغلالها. وقريبته في المتصفح هي البرمجة النصية عبر المواقع.