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

الموضوع: تنبية عن ثغرة أمنية في سكريب الفتاوي .

  1. #1
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,123

    تنبية عن ثغرة أمنية في سكريب الفتاوي .



    السلام عليكم

    في الاول اشكر الاخ ولد العودة على تصميم وبرمجة البرنامج وجزاه الله خير على حسن نيته و نشرة السكريب بالمجان .

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

    وبعض الثغرات الاخرى مثل حقن قواعد البيانات, SQL Injection .


    الموضوع ليس فقط بالنسبة لسكريب الفتاوي بل العديد من السكريبات العربية ومع الاسف بسبب

    عدم المعرفة لبعض هذه الامور اثناء البرمجة , ونعلم التحديثات التي تحصل من قبل مبرمجين

    اكادميين مثل برامج vBulletin والنيوك وغيرها .


    حلول :: يجب الحذر عند الرد على اي سؤال للفتاوي خاصة التي تحتوي على اكواد غريبة .
    :: تعطيل كود html عند الارسال للقاعدة .

    مثال

    كود PHP:
    <?
    htmlspecialchars
    ($ff);
     
    ?>
    حيث يكون المتغير $ffهو المتغير الذي نريد إلغاء منه الـ html
    وطبعا يمكننا اعطاء هذا المتغير اي قيمة نريد
    او ارجاع اي قيمة له من قواعد البيانات

    SQL Injection ؟؟

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

    SQL Injection يعمل مع اي موقع يستخدم لغة برمجة للسيرفر مع قاعدة البينات مثل ASP, JSP, PHP, CGI, ...الخ

    ماهو SQL Injection؟

    هوه خدعه يقوم بها المتصفح لحقن الموقع باوامر SQL بحيث يقوم بالحصول على معلومات الموقع او حتى تستطيع ان تقوم بحذف كامل قاعدة البيانات من موقع معن في حال ان الموقع غير محصن من هذه الناحية

    البداية و عن ماذا نبحث ؟

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

    كود PHP:
    http://localhost/Categories.asp?categoryId=502 

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

    كود PHP:
    $SQL="Select * from products where CAT=502" 
    اذا قمنا بتعديل المتغير علىالرابط بحيث يكون بهذا الشكل

    كود PHP:
    http://localhost/Categories.asp?categoryId=502 or 1=1 
    سيصبح امر SQL على هذا الشكل

    كود PHP:
    $SQL="Select * from products where CAT=502 or 1=1" 
    و بهذا الشكل نكون قدد حصلنا على امنتجات جميعا بغض النظر عن الجدول التابعه لههذه المنتجات

    و تستطيع بهذا المثال البسيط ان تتخيل مقدار المعلومات اللتي تستطيع الوصول اليها عن طريق ادخال بعض الاوامر في الحقول التي ترسل الى اوامر SQL بالموقع

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

    شيء أخر :

    عن استقبال قيم المتغيرات استخدم المصفوفات
    كود PHP:
    $_GET و $_POST 
    كود PHP:
    $id $_GET['id']; 
    واذا تستقبلها من نموذج بطريقة post فاستقبلها هكذا
    كود PHP:
    $name $_POST['name']; 
    $email $_POST['email']; 
    استخدم الدوال لتنقية النصوص وخصوصا قبل ادخالها الى قاعدة البيانات

    مثلا
    intval ترجع لك قيمة عددية
    trim تحذف الفراغ من اول النص واخره وهذا يساعد على الحفاظ على حجم اكبر فيقواعد البيانات
    addslashes تقوم بوضع / السلاش في النصوص قبل "
    هذا عن الاضافة في قواعد البيانات وعند طباعة النص الذي استخدمت له addslashes
    استخدم stripshashes لازالة السلاش عند طباعة النصوص من اجل الشكل والمظهر

    htmlspecialchars او stripslashes لازالة اكواد php و html من النصوص

    وهذا مثال على كل واحدة


    كود PHP:
    $id intval($_GET['id']); 
    $name trim($_POST['name']); 
    $name addslashes($_POST['name']); 

    echo 
    stripshashes ($row['name']); 

    $page htmlspecialchars($_GET['page']); 
    $page htmlspecialchars($_POST['page']); 

    $page stripslashes($_GET['page']); 
    $page stripslashes($_POST['page']); 

    ملاحظة mysql_escape_string تعمل نفس عمل addslashes وايضا هناك دالة تعمل نفس العمل mysql_real_escape_string

    ملاحظة 2 كل تنقية النصوص تكون قبل ادخالها الى قاعدة البيانات حتى تضمن امان اكثر

    مثال

    كود PHP:
    $name addslashes($_GET['name']); 
    $sql mysql_query("insert into table (name) values('$name')"); 
    اقتباس من مشاركة الاخ إنترنت بلس عند استخدام الأرقام التي ترسل بواسطة GET

    كود PHP:
    $page = (int) $_GET['page']; 
    النصوص ::

    كود PHP:
    $page strip_tags($_GET['page']); 
    الموضوع

    حمل برنامج الفتاوى الإسلامي وعناوين المراكز والمفتين



    تم اقتباس العديد من المقالات الخاصة في النواحي الامنية في سوالف وغيرها من المنتديات .

    اخوكم بدر العنزي .





    __________________
    htaccess بكل بساطة

    الشفرة الموحدة "يونِكود"

    (إن من مفاسد هذه الحضارة أنها تسمي الاحتيال ذكاءً، والانحلال حرية، و"الرذيلة فناً" والاستغلال معونة) - مصطفى السباعي


  2. #2
    عضو نشيط جدا
    تاريخ التسجيل
    Feb 2005
    المشاركات
    577


    الله يكنب لك الاجر يابدر





    __________________
    المركز العربي للبرمجة من القلب شكرا لكم

    بوابة البرامج
    http://pro60.com

  3. #3
    عضو فعال
    تاريخ التسجيل
    Feb 2004
    المشاركات
    1,318


    جزاك الله خير






  4. #4
    عضو نشيط
    تاريخ التسجيل
    May 2004
    المشاركات
    97


    جزاك الله خير اخي الفاضل





    __________________
    http://www.almanalgate.com/
    بوابة المنال
    لخدمات النيوك الاحترافية
    ::الشبكة العربية التعليمية سابقا::

  5. #5
    مُجَاهِد سابقاً
    تاريخ التسجيل
    Apr 2004
    المشاركات
    12,000


    جزاك الله خير ..





    __________________
    استخدم خاصية تنبيه المشرفين للضرورة وعند ملاحظة موضوع يخالف قوانين منتديات سوالف وسيتم مراجعة الموضوع او المشاركة المبلغ عنها على الفور

  6. #6
    عضو نشيط
    تاريخ التسجيل
    Jul 2003
    المشاركات
    240


    جزاك الله ألف خير أخوي بدر....

    للأسف العديد من السكربتات العربية تحوي ثغرات كثيرة مثلما ذكرت.. و ذلك لقلة الخبرة وعدم البحث و التبحث في موضوع البرمجة الآمنة... العديد من المبرمجين لا يهتم بهذه الناحية مع العلم بأن هذا أول شئ يجب على المبرمج تعلمه قبل أن يحاول طرح سكربتات مجانية أو مدفوعة... أشكر الأخوة جميعاً لمحاولاتهم الجيدة والتي لا ننكرها ولكن (ما هكذا تورد الأبل)!

    والامر الآخر الذي لاحظته ايضاً الإعتماد في البرمجة على خاصية register globals on، بينما إصدارات php منذ 4.2.0 حتى اليوم يتم طرحها مع register globals off كحالة قياسية... وللعلم ان أي برنامج يعتمد في برمجته على إغلاق الرجستر جلوبال يعمل في بيئة يكون فيها الرجستر جلوبال متاح بدون اي مشاكل، بينما العكس غير صحيح! لذلك اجد ان العديد من المشاركات تقول (نقلت الاستضافه الى مستضيف آخر، و الأن $PHP_SELF لا يعمل!) جيث يكون مستضيفه السابق يستخدم rehgister globals on أما المستضيف الجديد يستخدم register globals off

    بوجـــــبر





    __________________
    بوجبر

    http://www.ba7reny.com
    بحريني دوت كوم (موقع صديق)

  7. #7
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,123


    الشكر للجميع اخوي M-Plus شرح جدا رائع ونتظر المزيد خاصة في النواحي الامنية , فليس كل ما تعرفة يعرفة غيرك .





    __________________
    htaccess بكل بساطة

    الشفرة الموحدة "يونِكود"

    (إن من مفاسد هذه الحضارة أنها تسمي الاحتيال ذكاءً، والانحلال حرية، و"الرذيلة فناً" والاستغلال معونة) - مصطفى السباعي





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

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

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