مبرمج و مطور للويب ، متخصص في لغة الـ PHP و نظام قواعد البيانات MySQL ، يعمل على منصات التطوير من شركة صن مايكروسيسمتز مثل J2EE و J2SE و ذو خبرة كبيرة في مجال المعايير القياسية لتصميم مواقع الويب إذا كنت مطور لبرمجيات تعمل على الويب بأي لغة من اللغات ، فلا بد أنك تحرص كل الحرص على تأمين الحماية لبرامجك نظرا لأنها ستطرح للإستخدام العام من قبل مستخدمين غير معروفين و غير محددين و ليس على إستخداماتهم أي سيطرة ، سنناقش في هذه المقالة واحدة من أهم الأخطار التي تهدد برمجيات الويب ، الا وهي الـ SQL Injection ، فإذا كنت مهتم فعلا ببناء برامج آمنة و محمية ، فتفضل بقراءة هذه المقالة
يسعى الكثير من مطوري مواقع الويب و تطبيقاتها الى بناء برامج آمنة الى حد كبير ، وذلك بإستخدام العديد من الأساليب البرمجية المتبعة و التي تقدمها كل لغة لحماية مستخدميها ، ولكن هل تلك الدوال المقدمة من لغات البرمجية كافية فعلا لضمان حماية التطبيقات ضد أي إعتداء أو تشويه للبيانات المخزنة ؟
بالطبع لا ، فالاسلوب البرمجي بحد ذاته يعتبر عامل أساسي في تحديد مستوى الأمان الذي يتحلى به التطبيق ، و لعل العديد من المبرمجين في الآونة الأخيرة أحسوا بعظم المخاطر الأمنية التي بدأت تظهر نتيجة توفر المعلومات التقنية لدى العديد من ضعفاء النفوس ، و بسبب إحتدام المنافسة التجارية بين مطوري التطبيقات ، خاصة تطبيقات الويب التي تعبر عن مستقبل التطوير بشكل كامل
سنتحدث في هذه المقالة المطولة بعض الشيء عن واحد من أشد الأخطار فتكاً في تطبيقات الويب ، حيث يمكن لهذه النوعية من الهجمات أن تقوم بمسح قاعدة بيانات كاملة ، او سرقة محتوياتها ، بتعديل بسيط في نماذج الإدخال ، أو بتغيير بسيط جدا في عنوان الموقع !!
الـ SQL Injection أو إن صح لنا تعريبه بـ " حقن الـ SQL " ، هو نوع من الهجمات يعتمد على إضافة شيفر SQL الى المتغيرات المررة للنظام ، بحيث يتم تنفيذ هذه الجزئية من الشيفرة مع الشيفرة الأساسية الموجودة في النظام ، لتوضيح الصورة ، سنطرح هذا المثال المكتوب بلغة PHP بإستخدام نظام قواعد البيانات MySQL :
}
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>
هذه الشيفرة تقوم ببساطة بعرض مربعين لإدخال إسم المستخدم و كلمة المرور ، ثم تقوم بفحص المدخلات ، فإذا وجدت في قاعدة البيانات سجل أو أكثر يطابق المدخلات فستسمح للزائر بالدخول ، و اذا لم تجد فلن تسمح له
الأن تخيل لو أن المخترق قام بإدخال التالي في حقل كلمة المرور :
بذلك ستصبح جملة الإستعلام في أصل البرنامج بهذا الشكل :