تُعرف إحدى أكبر فئات الثغرات الأمنية على الويب باسم "SQL Injection" أو SQLi. لغة الاستعلام الهيكلية ، المعروفة أيضًا باسم SQL ، هي لغة الاستعلامات اللغة المستخدمة للتفاعل مع غالبية قواعد البيانات ، على الرغم من استخدام عدد من المتغيرات للغة اعتمادًا على قاعدة البيانات برنامج. أي موقع ويب يخزن بيانات المستخدم ، مثل معلومات الحساب ، أو يوفر وظيفة تحميل المستخدم ، مثل موقع استضافة الصور ، سيستخدم قاعدة بيانات لتخزين تلك البيانات.
نصيحة: يُنطق SQL عمومًا إما "ess cue ell" أو "تتمة" حيث يكون الخيار الأول أكثر شيوعًا في الإنجليزية البريطانية والثاني أكثر شيوعًا في الإنجليزية الأمريكية. يتم فهم كلا المنطقتين بشكل عام في سياق الحديث عن قواعد البيانات.
ما هو SQLi؟
SQLi هي ثغرة أمنية حيث يقوم مطورو الويب بتصميم الكود الذي يتواصل بين لا ينفذ خادم الويب وقاعدة البيانات الحماية ضد أوامر SQL التي يتم إرسالها من قبل ملف المستعمل. المشكلة هي أنه من الممكن أن تكون قادرًا على الهروب من عبارات قاعدة البيانات وإضافة وسيطات جديدة أو بيان جديد تمامًا. يمكن لعبارة قاعدة البيانات المتغيرة أو الثانية تنفيذ مجموعة من الإجراءات بما في ذلك عمليات الحذف واسعة النطاق المحتملة أو تسرب البيانات.
تدور برمجيات إكسبلويت عادةً حول جعل العبارات الحالية صحيحة في جميع الظروف أو توفير أمر مجمّع ثانٍ ينفذ إجراءً محددًا مثل حذف أو عرض جميع البيانات. على سبيل المثال ، قد يتحقق بيان SQL لتسجيل الدخول إلى موقع ويب مما إذا كان اسم المستخدم وكلمة المرور المقدمين يتطابقان مع إدخال في قاعدة البيانات. لمحاولة الحصول على حق الوصول ، قد يحاول استغلال حقن SQL إضافة عبارة "أو صحيح" مثل "أو 1 = 1". سيؤدي هذا إلى جعل الأمر على طول سطور "تسجيل الدخول باستخدام اسم المستخدم [هذا] ، إذا كانت كلمة المرور [هذه] ، أو هذه العبارة صحيحة".
كيفية منع SQLi
اعتادت SQLi أن تكون طريقة شائعة جدًا لمواقع الويب لخرق قاعدة بياناتها ثم تسريبها عبر الإنترنت. نظرًا للجهود المتضافرة لضمان أن يكون الوعي الأمني جزءًا من تدريب المطورين ، فقد تم حل هذه الفئة من الثغرات الأمنية إلى حد كبير ونادرًا ما يتم رؤيتها بعد الآن.
الطريقة الصحيحة لمنع SQLi هي استخدام العبارات المعدة ، والمعروفة أيضًا باسم الاستعلامات ذات المعلمات. تقليديا ، يتم التصريح عن جمل SQL ويكون إدخال المستخدم متسلسلًا فيها أثناء هذا الإعلان. باستخدام البيانات المعدة ، يتم كتابة أمر قاعدة البيانات ثم تقوم وظيفة sperate بتشغيل الأمر وإدراج بيانات المستخدم. على الرغم من أن هذا قد يبدو اختلافًا بسيطًا ، إلا أنه يغير تمامًا كيفية معالجة الأمر. يمنع الاختلاف تشغيل أي أوامر SQL ذات مغزى ويتعامل مع جميع إدخالات المستخدم كسلسلة ، مما يمنع حدوث حقن SQL.