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

منتدى شباب كفر الجمال

 
الرئيسيةالبوابةأحدث الصورالتسجيلدخول
الـ SQL Injection ، سلاح الدمار الشامل للمواقع Animal11
الـ SQL Injection ، سلاح الدمار الشامل للمواقع 09910
الـ SQL Injection ، سلاح الدمار الشامل للمواقع 1611
الـ SQL Injection ، سلاح الدمار الشامل للمواقع Tالـ SQL Injection ، سلاح الدمار الشامل للمواقع Eالـ SQL Injection ، سلاح الدمار الشامل للمواقع Nالـ SQL Injection ، سلاح الدمار الشامل للمواقع Emptyالـ SQL Injection ، سلاح الدمار الشامل للمواقع Lالـ SQL Injection ، سلاح الدمار الشامل للمواقع Aالـ SQL Injection ، سلاح الدمار الشامل للمواقع Mالـ SQL Injection ، سلاح الدمار الشامل للمواقع Eالـ SQL Injection ، سلاح الدمار الشامل للمواقع Gالـ SQL Injection ، سلاح الدمار الشامل للمواقع Lالـ SQL Injection ، سلاح الدمار الشامل للمواقع Eالـ SQL Injection ، سلاح الدمار الشامل للمواقع Emptyالـ SQL Injection ، سلاح الدمار الشامل للمواقع Wالـ SQL Injection ، سلاح الدمار الشامل للمواقع Wالـ SQL Injection ، سلاح الدمار الشامل للمواقع W
الـ SQL Injection ، سلاح الدمار الشامل للمواقع 1611 الآن  وبعون الله تعالى   المنتدى على سيرفر جديد www.elgemal.net

 

 الـ SQL Injection ، سلاح الدمار الشامل للمواقع

اذهب الى الأسفل 
كاتب الموضوعرسالة
Master H4
مراقب عام للمنتدى
مراقب عام للمنتدى
Master H4


ذكر عدد الرسائل : 380
العمر : 45
نقاط : 97
تاريخ التسجيل : 12/04/2008

الـ SQL Injection ، سلاح الدمار الشامل للمواقع Empty
مُساهمةموضوع: الـ SQL Injection ، سلاح الدمار الشامل للمواقع   الـ SQL Injection ، سلاح الدمار الشامل للمواقع Emptyالسبت 28 يونيو - 11:57:14

ما هو الـ SQL Injection

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

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

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

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



" method=post>







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

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

' OR username LIKE '%


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

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



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

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

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


ما هي مخاطر الـ SQL Injection

مخاطر الـ SQL Injection تتنوع بحسب وظائف التطبيق نفسه ، فعلى سبيل المثال لنفترض أن لدينا موقع لتسجيل الطلاب و الإستعلام عن درجاتهم و مستوياتهم ، يمكن القيام بما يلي عن طريق الـ SQL Injection :

1-
الإستعلام عن درجة طالب بدون معرفة كلمة المرور الخاصة به !!

2-
حذف سجل طالب أو مجموعة من الطلاب

3-
حذف جدول كامل من قاعدة البيانات

4-
إدراج سجل جديد في قاعدة البيانات

5-
إكتشاف مسميات الجداول و تركيب و بنية قاعدة البيانات عن طريق التجربة

6-
التعديل بمحتوى سجل محدد و تغيير بياناته !!

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

مثال على أمر يقوم بسحب البيانات عن طريق أمر SQL مدمج :

SELECT Id,Title,Abstract FROM News WHERE Category=1 UNION SELECT 1,UsrName,Passwd FROM Usr

الجزء الملون من الإستعلام هو المتغيير الممرر الى البرنامج ، حيث يقوم المخترق في هذا المثال بتمرير أمر SQL آخر وظيفته جلب إسم المستخدم و كلمة المرور من الجدول Usr ، الأن أصبح المخترق قادر على رؤية أسماء المستخدمين و كلمات مرورهم جميعها ... هل لك أن تتخيل ذلك ؟؟؟


مثال على أمر يقوم بإدراج بيانات مستخدم جديد :

SELECT email, passwd, login_id, full_name
FROM members
WHERE email = '
x';
INSERT INTO members ('email','passwd','login_id','full_name')
VALUES ('btree@devhall.com','hello','Btree','Binary Tree');--
';


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


مثال يقوم بحذف جدول كامل من قاعدة البيانات !!

SELECT fieldlist
FROM customers
WHERE name = 'Binary Tree';




الشيفرة السابقة تعمل بشكل سليم و نظامي ، حيث تم تمرير قيمة Binary Tree للمتغير في حقل name ، لكن تخيل لو قام المخترق بالتالي :

SELECT fieldlist
FROM customers
WHERE name = '
\''; DROP TABLE users; --';



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


أعتقد أن هذه الأمثلة كافية لإيقاظ المبرمجين الغافلين عن المخاطر الفعلية وراء مدخلات المستخدمين


ما هي الحلول ؟

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

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


2-
تحقق من كافة المدخلات التي يدخلها المستخدم ، على سبيل المثال ، اذا كان من المفترض أن يدخل المستخدم في هذا الحقل رقما ، فلا تسمح له بتاتا بإدخال أي شيئ عدا الأرقام ، أو إن كان هذا الحقل مخصص لعناوين البريد الإلكتروني ، فلا تسمح بكتابة شيء غير البريد الإلكتروني عن طريق التحقق بواسطة الـ Regular Expressions ، أيضا اللغات الحديثة للتطوير توفر مجموعة من الدوال تخلص المدخلات من الشوائب الغير نظامية في الإدخال ، فعلى سبيل المثال ، في نظام قواعد البيانات MySQL يمكن إستخدام الدالة التالية :



safeEscapeString($parameter)


حيث ستزيل هذه الدالة اي أوامر SQL تكتب في المتغيرات الممرة للنظام


3-
عطل خاصية الإستعلامات المتداخلة Nested Queries في نظام قواعد البيانات الذي تستخدمه


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

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتدى شباب كفر الجمال :: منتدى الطلاب و العلوم و التكنولوجيا :: الكمبيوتر و الإنترنت-
انتقل الى: