أخطاء المبرمجين الأمنية فى PHP, الدرس الخامس (5)

Spread the love
 أخطاء المبرمجين الأمنية فى PHP, الدرس الخامس (5)  أضيف في: 12-5-1427هـ
أخطاء المبرمجين الأمنية فى PHP, الدرس الخامس (5)


8- تابع أخطاء جمل إستعلام SQL

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

CODE


$id = $_GET[“id”];
$result = mysql_query(“SELECT * FROM `articles` where id=$id;”);

و بما أنه لم يتم التأكد من المتغير $id فإذا قام المستخدم بناءً على ما سبق بإدخال الجملة التالية فى شريط العنوان بالمتصفح –

CODE


Page.php?id=0 UNION SELECT * FROM `admin_users`

أصبحت جملة الإستعلام كالآتى:

CODE


SELECT * FROM `articles` WHERE id=0
UNION SELECT * FROM `admin_users`;

مما سوف تكون نتيجته إظهار كل محتويات الجدول `admin_users` و هى بيانات من المفترض أنها غير متاحة ، و الحل بما أن المتغير $id هو رقم إذن ينبغى التأكد من أنه رقم (فقط) و هناك طريقتين أرجح إستخدام ثانيهما ، أما الأولى فهى التأكد بإستخدام دالة intval ليصبح:

CODE


$id = intval($_GET[“id”]);

أما الطريقة الثانية و المفضلة فى رأيى:

CODE


$id = $_GET[“id”];
If (!is_numeric($id)) {
………………….echo “foot bokra”
} else {
………………….continue
}

و كمثال آخر و لكن المتغير عبارة عن نص:

CODE


$name = $_GET[“name”];
$result = mysql_query(“SELECT * FROM `articles`
WHERE title=”$name”;”);

و بما أنه لم يتم التأكد من المتغير $name فإذا قام المستخدم بناءً على ما سبق بإدخال الجملة التالية فى شريط العنوان بالمتصفح –

CODE


Page.php?name= UNION SELECT * FROM `admin_users`
WHERE name=”%

سوف تكون النتيجةإظهار كل محتويات الجدول `admin_users` و المفترض أنها غير متاحة و الحل بما أن المتغير $name هو متغير نصى إذن ينبغى التأكد أن المتغير المدخل $name يحتوى على نص (فقط) و هناك طريقتان للتحقق من أن المدخل نص (فقط) و إنهاء جملة الإستعلام ، أما الطريقة الأولى فهى:

CODE


$name = str_replace(“””, “””, $_GET[“name”]);

أما الطريقة الثانية فهى كالآتى:

CODE


$name = str_replace(“””, “\””, $_GET[“name”]);

الكاتب: هاني جمال

الكاتب geek4arab

geek4arab

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

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