الـ SQL Injection ، سلاح الدمار الشامل ضد تطبيقات الويب

عام 0 geek4arab
Spread the love
ما هو الـ SQL Injection

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

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

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

الـ SQL Injection أو إن صح لنا تعريبه بـ ” حقن الـ SQL ” ، هو نوع من الهجمات يعتمد على إضافة شيفر SQL الى المتغيرات المررة للنظام ، بحيث يتم تنفيذ هذه الجزئية من الشيفرة مع الشيفرة الأساسية الموجودة في النظام ، لتوضيح الصورة ، سنطرح هذا المثال المكتوب بلغة PHP بإستخدام نظام قواعد البيانات MySQL :

<?
$sql=”SELECT * FROM users WHERE username=’ ” .$_POST[‘username’] . ” ‘  AND password= ‘ ” . $_POST[‘password’] . ” ‘ ” ;

echo ‘ Query : ‘. $sql . ‘
‘ ;
$result=mysql_query($sql) ;
$rows=mysql_num_rows($result) ;
if($rows > 0 )
{
echo ” You are logged in ! ” ; }

else

{

    echo ” you are not allowed to log in here ! ” ;
}

?>

<form action=”<?php echo $_SERVER[‘PHP_SELF’] ; ?> ” method=”post”><br/><input name=”username”/><font color=”#990000″> <br/><br/></font><input name=”password”/><font color=”#990000″> <br/><br/></font><input type=”submit” value=”Submit”/><br/></form>

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

الأن تخيل لو أن المخترق قام بإدخال التالي في حقل كلمة المرور :

‘ OR username LIKE ‘%

بذلك ستصبح جملة الإستعلام في أصل البرنامج بهذا الشكل :

SELECT * FROM users WHERE username=’ ‘ AND password= ‘ ‘ OR username LIKE ‘%’

جملة الإستعلام ستكون نتيجتها أكثر من سجل واحد بكل تأكيد ، ببساطة ستكون نتيجتها كافة السجلات ، لأن أي سجل في قاعدة البيانات سيطابق شروط هذا الإستعلام ، بسبب وجود الشرط OR

هذا يعني أن المخترق سيتمكن من الوصول الى المنطقة التي لا يمكن الا للأعضاء أن يصلوا اليها !!

أتمنى أن يكون هذا المثال المبسط قد أوضح بشكل كامل ما هو المقصود بالـ SQL Injection و مدى خطورته ، سيتخلل هذه المقالة المزيد من الأمثلة بإذن الله

الكاتب geek4arab

geek4arab

مواضيع متعلقة

التعليقات مغلقة