Skip to main content
تطوير المواقع

شرح حماية موقعك من حقن قواعد البيانات

By أبريل 13, 2016#!31الثلاثاء, 26 مارس 2019 15:32:37 +0200p3731#31الثلاثاء, 26 مارس 2019 15:32:37 +0200p-3Africa/Cairo3131Africa/Cairox31 26م31م-31الثلاثاء, 26 مارس 2019 15:32:37 +0200p3Africa/Cairo3131Africa/Cairox312019الثلاثاء, 26 مارس 2019 15:32:37 +0200323323مالثلاثاء=22#!31الثلاثاء, 26 مارس 2019 15:32:37 +0200pAfrica/Cairo3#مارس 26th, 2019#!31الثلاثاء, 26 مارس 2019 15:32:37 +0200p3731#/31الثلاثاء, 26 مارس 2019 15:32:37 +0200p-3Africa/Cairo3131Africa/Cairox31#!31الثلاثاء, 26 مارس 2019 15:32:37 +0200pAfrica/Cairo3#No Comments

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

نبدأ
كود لتجربة عملية الحقن في متغيرات php
   <?php
$_POST[‘username’] = ‘ahmed’;
$_POST[‘password’] = “‘ OR ”='”;
// البحث في قاعدة البيانات عن عضوية مشابهة لمدخلات المستخدم
$query = “SELECT * FROM users WHERE user='”.$_POST[‘username’].”‘ AND password='”.$_POST[‘password’].”‘”;
mysql_query($query);
// لم نقم بفحص المتغير $_POST[‘password’] الذي أدخله المستخدم, قد يحتوي على أي أوامر يريدها المستخدم! وفي مثالنا هذا قام المستخدم بتخطي كلمة المرور:
?>
هذا يعني بأن الاستعلام الذي تم ارسالة أصبح كالتالي
SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''

الموضوع صعب مش كده؟

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

Mysql_real_escape_string()

حيث يجب تمرير كل مدخلات المستخدم من خلال هذه الدالة حيث تعمل على فلترة وتحويل الرموز الخطيرة بحيث لا يكون لها أي تأثير في الاستعلام ويتم التعامل معها كنص عادي

مثالنا السابق مع عمل فلترة عن طريق الدالة للمدخلات:

<?php
$_POST[‘username’] = ‘ahmed’;
$_POST[‘password’] = “‘ OR ”='”;
// البحث في قاعدة البيانات عن عضوية مشابهة لمدخلات المستخدم
$query = “SELECT * FROM users WHERE user='”. mysql_real_escape_string($_POST[‘username’]).”‘ AND password='”. mysql_real_escape_string($_POST[‘password’]).”‘”;
mysql_query($query);
// لاحظ اننا قمنا بعمل فلتر المتغيرات عن طريق الدالة وهنا يتم ابطال مفعول الحقن
?>

 وهكذا انتهي الدرس..كشف الثغرات..الاستغلال..الحماية من الثغرة

 Ahmed El Sheikh
Nemra1

Nemra1 Adminstrator

Leave a Reply

Close Menu

Come see us

Wow look at this!

This is an optional, highly
customizable off canvas area.

arArabic