منتديات اولاد الفاو

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



انضم إلى المنتدى ، فالأمر سريع وسهل

منتديات اولاد الفاو

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

منتديات اولاد الفاو

هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.
منتديات اولاد الفاو

من ارض الفاو نحيكم

مكتبة الصور


البرمجة الآمنة في لغة SQL Injections … PHP Empty

المواضيع الأخيرة

» همسات دينية ..
البرمجة الآمنة في لغة SQL Injections … PHP Emptyالثلاثاء مارس 03, 2015 1:12 am من طرف علي البرنس

» Definition of salmonella bacteria
البرمجة الآمنة في لغة SQL Injections … PHP Emptyالجمعة مارس 14, 2014 12:08 am من طرف أحمدكزمه عين اللويقة

» تعريف بكتيريا السلمونيلا
البرمجة الآمنة في لغة SQL Injections … PHP Emptyالأربعاء فبراير 26, 2014 7:25 am من طرف ميسره احمد عثمان

» Enteric feve
البرمجة الآمنة في لغة SQL Injections … PHP Emptyالأربعاء فبراير 26, 2014 7:14 am من طرف ميسره احمد عثمان

» حمى التايفويد
البرمجة الآمنة في لغة SQL Injections … PHP Emptyالأربعاء فبراير 26, 2014 6:55 am من طرف ميسره احمد عثمان

» تحية طيبة
البرمجة الآمنة في لغة SQL Injections … PHP Emptyالأحد يناير 19, 2014 2:29 pm من طرف Admin

» حير2نا يا ناس البرير
البرمجة الآمنة في لغة SQL Injections … PHP Emptyالأربعاء يناير 08, 2014 9:28 am من طرف أحمدكزمه عين اللويقة

» من قصة المحلق وتاجوج
البرمجة الآمنة في لغة SQL Injections … PHP Emptyالثلاثاء يناير 07, 2014 11:13 pm من طرف أحمدكزمه عين اللويقة

» هذا هو الاسلام
البرمجة الآمنة في لغة SQL Injections … PHP Emptyالأربعاء ديسمبر 25, 2013 2:36 pm من طرف أحمدكزمه عين اللويقة

» ثورة الطين(احمد مطر)
البرمجة الآمنة في لغة SQL Injections … PHP Emptyالثلاثاء ديسمبر 24, 2013 5:22 pm من طرف أحمدكزمه عين اللويقة

» يلاكم ننم وندوبي
البرمجة الآمنة في لغة SQL Injections … PHP Emptyالثلاثاء ديسمبر 24, 2013 3:00 pm من طرف أحمدكزمه عين اللويقة

» معا من أجل موسوعة من الامثال السودانية الحديثة والمعاصرة
البرمجة الآمنة في لغة SQL Injections … PHP Emptyالثلاثاء ديسمبر 24, 2013 2:27 pm من طرف أحمدكزمه عين اللويقة

» عووووووووووووووووووووووك
البرمجة الآمنة في لغة SQL Injections … PHP Emptyالثلاثاء ديسمبر 24, 2013 12:47 am من طرف أحمدكزمه عين اللويقة

» الدوبيت السودانى
البرمجة الآمنة في لغة SQL Injections … PHP Emptyالثلاثاء ديسمبر 24, 2013 12:36 am من طرف أحمدكزمه عين اللويقة

» امثال شعبية
البرمجة الآمنة في لغة SQL Injections … PHP Emptyالثلاثاء ديسمبر 24, 2013 12:32 am من طرف أحمدكزمه عين اللويقة

المتواجدون الآن ؟

ككل هناك 4 عُضو متصل حالياً :: 0 عضو مُسجل, 0 عُضو مُختفي و 4 زائر

لا أحد


[ مُعاينة اللائحة بأكملها ]


أكبر عدد للأعضاء المتواجدين في هذا المنتدى في نفس الوقت كان 23 بتاريخ الأربعاء أبريل 12, 2023 6:16 pm

احصائيات

أعضاؤنا قدموا 1411 مساهمة في هذا المنتدى في 1101 موضوع

هذا المنتدى يتوفر على 158 عُضو.

آخر عُضو مُسجل هو Alsadg19 فمرحباً به.


    البرمجة الآمنة في لغة SQL Injections … PHP

    ميسره احمد عثمان
    ميسره احمد عثمان
    Admin


    عدد المساهمات : 467
    نقاط : 1367
    السٌّمعَة : 5
    تاريخ التسجيل : 02/02/2011

    البرمجة الآمنة في لغة SQL Injections … PHP Empty البرمجة الآمنة في لغة SQL Injections … PHP

    مُساهمة من طرف ميسره احمد عثمان السبت أكتوبر 15, 2011 1:06 pm



    ابحث عن:



    المشروع - كل ما يتعلق بتطوير المواقع http://www.almashroo.com/



    انضم للكتّاب


    البرمجة الآمنة في لغة SQL Injections … PHP


    مدرج تحت قسم: دروس


    23 يوليو 2006


    لقد تعرفنا على بالدرس السابق على CrossSite Scripting وطرق الحماية منه و كيفية الاستغلال الأولية. واليوم سوف نتكلم عن ما هو اخطر من XSS وما يسمى SQL Injection وتعني بالعربية ( حقنة السكيوال ).

    لماذا تسمى بالحقنة؟


    لقد سميت بالحقنة لأن من اكتشف هذا النوع سمها هكذا، لكن السبب الرئيسي هو ان طريقة استغلالها تكون بحقن الاستعلام الرئيسي باستعلام آخر يغير مجرى الاستعلام الأول للوصول إلى بيانات ليس من حقك الاطلاع عليها. وليـست فقط MySQL التي لها هذا النوع من الثغرات، بل Oracle & MS-SQL.

    ولكل واحدة طريقة استغلال، فمثلاً طريقة استغلال MS-SQL أهون بكثير من MySQL، لأنها توفر لك طرق لجلب اسماء الجداول و الحقول، لكن أكثر برمجيات PHP تعتمد بشكل كبير على MySQL لأنها تتوافق مع جميع السيرفرات، وكما ذكرنا ان مكانيكية العمل هي حقن الاستعلام الرئيسي باستعلام آخر، أو بدالة أخرى، تغير مجرى الاستعلام.


    أين من الممكن وجود هذا النوع من الثغرات؟


    من الممكن ايجاد هذا النوع من الثغرات في جميع برامج PHP ، ASP وغيرها التي تتعامل مع قواعد البيانات، حتى بالبرامج التنفيذية على Linux و غيره من الآنظمة. ودائما تذكر قبل البدء بكتابة برنامج من النواحي الأمنية وأنك تجيد تفادي الثغرات إلى حد كبير، ولا يوجد برنامج خالي من الثغرات.

    انظر إلى الكود التالي:
    view source
    print?

    1.<?php
    2.mysql_query("SELECT * FROM Table WHERE id=".$_GET]'id']."") or die(mysql_error());
    3.?>



    كما تلاحظ لقد قمنا بالاستعلام من الجدول ( Table ) عن محتوياته بشرط ان يعرض محتويات الحقول التي ( حقل ID فيها يساوي _GET[id] ). يكون الرابط على هذا الشكل:
    view source
    print?

    1.http://127.0.0.1/file.php?id=1



    لاكن لو اعطينا ID قيمة وهمية أو غير موجوده مثل ( -99999 ) سوف يعرض البيانات بحقول فارغه.
    view source
    print?

    1.http://127.0.0.1/file.php?id=-99999



    وعند استعمال الجملة ( UNION ) يتم تغير مجرى الاستعلام ما ان وجد البيانات فارغه ليستعلم عن شيء ليس من حقه الاتطلاع عليه.
    view source
    print?

    1.http://127.0.0.1/file.php?id=-99999 UNION SELECT username,password FROM admin/*



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

    الآن للحماية من هذه الثغره، مثلما راينا ان المتغير id متغير رقمي، لذلك يجب علينا استعمال الدالة intval() معه لتعيد القيمة الرقمية الحقيقية للمدخلات، وهذه بعض الدوال المساعده.
    http://il.php.net/manual/en/function.intval.php
    http://il.php.net/manual/en/function.is-numeric.php


    وهناك فائدة لاستعمال الدالتين، الأولى تعيد القيمة الرقمية الحقيقية للمدخلات، أما الثانية فهي تتاكد من المتغير اذا كان رقمي حقيقي أو لا و تعود بقيمتين ( True OR False ).

    استعمال الداله الأولى للترقيعة:
    view source
    print?

    1.<?php
    2.$id=intval($_GET]'id']); mysql_query("SELECT * FROM Table WHERE id=".$id."") or die(mysql_error());
    3.?>



    استعمال الداله الثانية للترقيعة:
    view source
    print?

    1.<?php
    2.if(!is_numeric($_GET]'id']))
    3.{
    4. echo "STOP SQL Injection";
    5. exit();
    6.}
    7.mysql_query("SELECT * FROM Table WHERE id=".$id."") or die(mysql_error());
    8.?>



    هذا بالنسبة للاستعمال مع الارقام، اما السلاسل النصية فلها دوال آخرى، انظر إلى الكود التالي:
    view source
    print?

    1.<?php
    2.mysql_query("SELECT * FROM Table WHERE id='".$_GET['email']."'") or die(mysql_error());
    3.?>



    هنا يتعامل مع سلسلة نصية و هي عبارة عن بريد الكتروني.
    view source
    print?

    1.http://127.0.0.1/file.php?id=me@almashroo.com



    سوف يصبح الاستعلام هكذا:
    view source
    print?

    1.mysql_query("SELECT * FROM Table WHERE id='me@almashroo.com'



    لكن في حالة تم إضافة علامة التنصيص ” ‘ ” للاستعلام، سوف يصبح هكذا:
    view source
    print?

    1.mysql_query("SELECT * FROM Table WHERE id='me@almashroo.com''



    ويظهر خطأ يعلمك بوجوده في الاستعلام وهنا تتم عملية كتابة الاتستغلال ( Exploit ).

    السلاسل النصية تاتي الحماية لها من ملف php.ini في حال ان magic_quotes_gpc = on. اما لو كانت magic_quotes_gpc = off فعندئذ يجب علينا استعمال دوال الـ addslashes() و دوال التاكد من ان المدخل بريد بـ مساعدة ( Regex ).

    الترقيع باستعمال addslashes()

    view source
    print?

    1.<? mysql_query("SELECT * FROM Table WHERE id='".addslashes($_GET['email'])."'") or die(mysql_error()); ?>



    حيث تعمل هذه الدالة على إضافة الـ Slash \ لكل للعلامات التالية:
    view source
    print?

    1.' & &amp

    بما أنك قد وصلت إلى النهاية، ربما تكون قد أحببت المقال وأردت المزيد:


    1. البرمجة الآمنة في لغة PHP [مقدمة]
    2. البرمجة الآمنة في لغة Declare Variables … PHP
    3. البرمجة الآمنة في لغة CrossSite Scripting … PHP
    4. البرمجة الآمنة في لغة PHP مع File Inclusion
    5. [سجن البرمجة] ستايل البرمجة – كود مرتّب (2)

    الوسوم: PHP ، SQL ، ثغرات ، دوال

      الوقت/التاريخ الآن هو الجمعة أبريل 26, 2024 2:03 pm