طرق الحماية من حقن sql injection

نظرة عامة

في هذه الأيام كثر استخدام الإنترنت بشكل كبير وواضح في أغلب شؤوننا اليومية وأصبحت بياناتنا الشخصية ومعلومات كثيرة مهمة وغير مهمة موضوعة في مكان مخصص يسمى بقاعدة البيانات و يتم جلب البيانات  لصفحات الإنترنت بإرسال جمل SQL  من المتصفح إلى الخادم ثم يقوم الخادم بإرسالها إلى قاعدة البيانات وجلبها منها مثل المعلومات الموجودة في البنك ,المستشفيات ,حجوزات الطيران وغيرها الكثير الذي يتم فيه  تبادل البيانات .

لذلك يستوجب حفظها بطريقة أمنه وعالية السريه ليحافظ صاحب الموقع على البيانات من جميع الجرائم الإلكترونية والتي من أسهلها وأخطرها  ما يداهم قاعدة البيانات التي يكون تأثيرها إمابسيط يمكن حله كالإطلاع على معلومات عاديه من حيث الأهمية أو معقد يصعب حله كحذف جدول يحتوي على معلومات مهمة وهذا النوع من الجرائم يسمى حقن SQL.

بموجب ذلك سوف أتحدث في هذا المقال عن ما هية جمل SQL  وكيف يتم الإختراق عن طريقها  وكيف يتم الحماية والمنع من هذا الإختراق. لأنه الأن أكثر من نصف مليون موقع في جميع أنحاء العالم تم اختراقه  بهذه الطريقة  والسبب صعوبة اكتشاف هذه الجمل لأن إعتماد المواقع لجلب المعلومات من الخادم ثم من قاعدة البيانات يعتمد على جمل SQL   .لذلك التحذير منه والتنبيه عليه أمر في غاية الأهمية  وهذه الحماية مسؤولية مصممي الموقع بأخذ الحيطة والحذر منه بكل الطرق الممكنة  لحماية هذه البيانات .

 

الكلمات المفتاحيه

جمل SQL , حقن SQL , قاعدة البيانات .

 

المقدمة

نحن في هذا العصر نواكب تطور سريع  في جميع المجالات ومن هذا التطور استخدام الإنترنت في أغلب شؤوننا فمثلا في جامعه الملك سعود كان تعديل جداول الطلاب يتطلب الذهاب للجامعة والتعديل يدويا أما الآن أصبح في الإمكان تعديل الجداول من اي مكان عبر البوابة الالكترونية بدون الحاجة للذهاب للجامعة.  لكن اي تطور ينتج منه مضار وعيوب والعيوب في مثل هذا التطور هو مشكلة  المحافظة على البيانات لماذا؟  لكثرة الجرائم عليها ,ومن هذه الجرائم هي حقن SQL  التي سوف أتحدث عنها في هذا المقال.

ولأهمية المعرفة بحقن SQL  سوف أذكر طرق حماية المعلومات الخاصة والمهمة من هذا الاختراق .

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

 

ما هي جمل SQL

هي لغة تستخدم لإدارة و استرجاع البيانات من قاعدة البيانات .

مثال :

SELECT FirstName ,LastName

FROM users

WHERE UserID=’Ali’ ;

 

ما هي حقن  SQL

حقن  :SQLهو هجوم يقوم به المخترق إلى قاعدة البيانات عن طريق إدخال جمل SQL إلى المكان المتاح للمستخدم بإستخراج معلومات من قاعدة البيانات ووصوله لمعلومات غير مخول له أو مسموح له بالوصول لها. مثل: صوره 1.

 

صوره 1

 

اشكال نقاط الضعف في المواقع

الشكل الأول :عن طريق نافذة إدخال البيانات

مثال: صوره2

 

 

 

 

صوره2

طريقه عمل : SQL

إذا قام المستخدم بإدخال أسم المستخدم وكلمه المرور فإنه يتم إرسال المدخل إلى الخادم ثم من الخادم إلى قاعدة البيانات ومن ثم البحث عنها في جدول خاص بالمستخدمين (صوره1) إلى أن يجد على الأقل أسم وكلمة مرور تطابق المدخل ثم  يسمح له بالدخول إلى الحساب الخاص به  أو لا يسمح له إذا لم يوجد.

 

الشكل الثاني:عن طريقUR L

مثل صوره3 :

صوره 3

 

طريقه عمل : SQL

إذا كان لدى الموقع أكثر من مقال وتم ترتيبها في جدول لكل مقال رقم خاص( ID)  كجدول 1 وحفظها في قاعدة البيانات وعند الضغط على الرابط  يبحث عن رقم خاص( ID) ويحضر المقال ولكن هذا الإرسال يكون واضح في URL  بعلامة مساواة.

Title ArticalID
Cars 10
Animals 11
Childs 12

جدول 1

 

 

طريقه إستغلال نقاط الضعف من قبل المخترقين

الشكل الأول :

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

SELECT FirstName ,LastName

FROM users

WHERE UserID=’Ali’  ;

 

لو حصل هجوم وقام المخترق بإدخال جمل SQL  ووضعها  في خانة الإدخال كالتالي  :

UserID =’x’ ; DROP TABLE users  ;

فإن الناتج أو الجملة التي سوف تنفذ على قاعدة البيانات هي كالتالي  :

SELECT FirstName ,LastName

FROM users

WHERE UserID=’x’ ; DROP TABLE users  ;

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

والتأثير هنا هو كلمة (DROP) ومعناها هو حذف الجدول المسمى بusers  وذلك يودي إلى فقدان البيانات .

الشكل الثاني :

في عنوان الوثائق والموارد الأخرى على الشبكة العنكبوتية (URL)

الرابط الأصلي الذي ينفذ هو :

http\\www.site.com/news.asp?login=ali

و وضع في URL  جمل حقن فيصبح  كالتالي:

http\\www.site.com/news.asp?login =X OR 1=1 .

وتكون جمل  SQL المرسلة لقاعدة البيانات كالتالي

SELECT FirstNem ,LastName

FROM users

WHERE UserID= X OR 1=1

إذن التأثير هنا هو أن الشرط يصبح دائما صحيح بذلك يمكنه الوصول لأشياء غير مسموح له وسرقة البيانات والهوية  .

المخاطر التي يسببها حقن SQL

  1. يؤثر على مبدأ السرية والخصوصية (Confidentiality)عند إختراق المعلومات السريه والحساسه.
  2. يؤثر على التكاملية (Integrity) عند القيام بالتعديل على البيانات مثل مسح قاعدة البيانات  .
  3. يوثر على استمرارية توفر الخدمة (Availability)عند عدم القدره على الدخول الى قاعدة البيانات مثل إغلاق قاعدة البيانات.
  4. يؤثر على تصريح (Authorization) عندما يتم التغيير على الصلاحيات مما يسبب دخول غير المخؤلين.
  5. يؤثر على التصديق / التحقق من الهوية (Authentication)عندما يتم الدخول بدون التحقق منه ويتم وصوله لنقاط غير مسموح له الوصول لها.

 

طرق حل مشاكل حقن SQL

  1. إستبدال كل علامة إقتباس مفرده بعلامة إقتباس مزدوجة.
  2. تجنب عرض تفاصيل عن الأخطاء .
  3. التقليل من الأماكن التي يسمح للمستخدم إستخراج معلومات من قاعدة البيانات .

مثال على ذلك  صوره 4

صوره 4

  1. التحقق من المدخل

يوجد نوعين لحل هذه المشكلة وهي :

  • النوع الأول  ويسمى بالقائمة البيضاء (white list):

أ‌-         نوع البيانات المدخلة :

مثلا لو كان المدخل رقم السجل المدني فانه لابد أن يتأكد بأن المدخل أرقام  فقط.

ب‌-        حجم البيانات المدخلة :

مثلآ لو كان المدخل رقم السجل المدني فإنه لابد أن يتأكد بأن المدخل حجمه عشرة أرقام

فقط.

ت‌-        محتوى البيانات المدخلة :

مثلا لو كان المدخل رقم السجل المدني فإنه لابد أن يتأكد بأن المدخل  لا يحتوي على

علامات مثل  <  أو  > .

  • النوع الثاني و يسمى القائمة السوداء(black list):

يمنع دخول الكلمات والعلامات المعروفة والمحجوزة في لغة SQL  .

مثل جدول2:

 

المعنى المدخل
نهاية الجملة ;
تعليق ما بعدها يهمل إلى النقطة
تعليق أي أن ما بينها مهمل /* … */
حذف Drop

جدول 2

طرق أخرى لحل بعض المشاكل الخاصة

  • كالمعلومات الحساسه :

1-    مشكله الأرقام السريه.

والحل هو: وضع لها  دالة الاختزال (hash function)و يخزن به حتى لا يتم إكتشافه حتى لو أخترق لأنه لا يستطيع قرأته.

2-    مشكلة بطاقات الإئتمان أو إي معلومات سريه ومهمة جدآ.

والحل هو:  تشفيرها حتى لا يتم إكتشافه معلوماتها إن تم إختراقها لأنه لن يستطيع قرأتها إلا بفك التشفير وهذه عمليه صعبه وتحتاج إلى معرفه الطريقة التي تم بها التشفيرأولا  .

3-    مشكلة الأرشيف.

والحل هو:حذف البيانات التي تم الإنتهى  منها ويخاف عليها من السرقة .

  • مشكلة الكلمات المعروفة في تسميه الجداول والأعمدة .

والحل هو:تجنب وضع كلمات معروفة أو سهل تخمينها وممكن أن تدل على إسم الجدول أوالعمود.

مثل عمود الأرقام السرية (password) ,وعمود أرقام السجل المدني ( civil Registry).

 

الخاتمة

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

 

 

 

الكاتب ayman

ayman

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

اترك رداً