النتائج 1 إلى 9 من 9

الموضوع: طريقك للحماية من SQL Injection

  1. #1
    عضو نشيط جدا
    تاريخ التسجيل
    Feb 2008
    المشاركات
    438

    طريقك للحماية من SQL Injection



    بسم الله الرحمن الرحيم

    أكثر ما يؤرق المبرمج في برامجه قضية أمن البرنامج، ورغم أن الأمن قضية لا يمكن أن تكون مئة بالمئة، لكن نعمل محاولين أن تكون برامجنا عصية على القراصنة.

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

    سنأخذ مثالاً على هذه الثغرة وآلية عملها، وكيف لنا معالجتها.

    مثال: لنفرض أن في موقعنا صفحة لعرض بيانات العضو المشترك في موقعنا.. مثل الملف الشخصي
    الرابط member.php?id=6

    من المتوقع أن يكون الكود:
    كود PHP:
    $id $_GET['id']
    $rowmysql_query('select * from `members` where id=$id'); 
    لكن هل هذه الصيغة صحيحة؟!! بالطبع لا، بل ستكون كارثة عليك، ستمكن القرصان من إستخدام جملة UNION SELECT
    بذلك ستكون الثغرة بهذا الشكل:
    member.php?id=’ UNION SELECT concat(username,char(58),password) FROM members

    وبذلك سيتمكن من عرض كلمة المرور password، حينها سيكون موقعك بين أنامل ولوحة مفاتيح هذا القرصان.

    لذلك كيف لي أن أوقف هذا الهجوم المتوقع؟

    هناك عدة أساليب وطرق، سنستخدم منها واحدة

    سنفحص إن كانت GET عبارة عن رقم أو لا، وذلك بإستخدام دالة isnumeric.
    سيكون الكود الصحيح:

    كود PHP:
    $id $_GET['id'];
    if(!
    isnumeric($id)) { die("No SQL Injection"); }
    $rowmysql_query('select * from `members` where id=$id'); 
    الآن لو حاولت تطبيق الثغرة السابقة، ستكون النتيجة على الشاشة:
    No SQL Injection

    لكن يا MPHP أنا في بحثي أستخدم كلمات String وليس أحرف، إذاً طريقتك هذه لا تفيدني في عمليات البحث !!

    صحيح كلامتك، إذا في هذه حالة، نستخدم دالة mysql_real_escape_string

    حيث سيكون الكود:
    كود PHP:
    $id mysql_real_escape_string($_GET['id']); 
    الآن حاول تطبيق الثغرات بعد كتابة الكود الصحيح، وإن شاء الله ستجد هذه الثغرة قد قضي عليها.

    أخوكم
    MPHP

    المصدر الأجنبي
    http://icrack.co.uk/?p=10





    __________________
    لا إله الا الله محمد رسول الله

    فضائية الأقصى :: عينك على الوطن
    نيلسات: 10872 عمودي 27500
    عربسات: 12054 عمودي 27500


    إعلامنا.. إسلامي.. هادف.. مقاوم.. لتعلو الراية..


  2. #2
    عضو جديد
    تاريخ التسجيل
    Feb 2008
    المشاركات
    4


    مشكووور اخوي عالمعلومات المفيده






  3. #3
    عضو جديد
    تاريخ التسجيل
    Jan 2008
    المشاركات
    15


    السلام عليكم ,
    جزاك الله الخير و العافية ,,
    تحياتي





    __________________
    ssuliman@hotmail.co.uk

  4. #4
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    55


    بارك الله فيك يالغالي ..

    إسمحلي أضيف بعض المعلومات :

    أنصح دائماً بإستخدام strip_tags للخلاص من ثغرة xss بالإضافة الى دوال الحماية المتبقية ..






  5. #5


    كما اضيف هذه

    كود PHP:
    // اذا كانت القيمة غير رقمية ارجعه الى صفر    كما يمكن تغير الصفر الى اي رقم تحتاجه 
    $id=(!is_numeric($_GET['id'])? $_GET['id']); 






    __________________
    عدت
    اقتراحاتكم -> www.elbachiri.com

  6. #6
    عضو فعال
    تاريخ التسجيل
    Aug 2007
    المشاركات
    1,431


    السلام عليكم
    جزاك الله خير على الموضوع
    لكن هل هذا الكود آمن :
    كود PHP:
    $id intval($_GET['id']);
    $sql mysql_query("SELECT * FROM `table` WHERE `id`='$id'"); 
    ?.






  7. #7
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    55


    اخي ff5006 :

    كودك آمن لإستعمالك للدالة intval وهي تقوم بتحويل $_GET['id'] الى النوع الرقمي ..






  8. #8
    عضو فعال
    تاريخ التسجيل
    Aug 2007
    المشاركات
    1,431

  9. #9
    عضو نشيط جدا
    تاريخ التسجيل
    Feb 2008
    المشاركات
    438


    بارك الله فيكم إخواني جميعاً لمروركم
    كما أدعوكم لتكملة ما بدأنا به هنا

    في موضوع: طريقك لتأمين كلمة المرور بالتمويه المتكرر
    http://www.swalif.net/softs/swalif45/softs222135/

    الذي من خلاله نتحدث عن قضية حساسة في أمن كلمة المرور، ونعمل على حلّها.





    التعديل الأخير تم بواسطة MPHP ; 13-03-2008 الساعة 10:54 PM سبب آخر: إضافة رابط الموضوع
    __________________
    لا إله الا الله محمد رسول الله

    فضائية الأقصى :: عينك على الوطن
    نيلسات: 10872 عمودي 27500
    عربسات: 12054 عمودي 27500


    إعلامنا.. إسلامي.. هادف.. مقاوم.. لتعلو الراية..





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض