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

الموضوع: استفسارات عن أمان المدخلات ..

  1. #1
    عضو نشيط
    تاريخ التسجيل
    Aug 2010
    المشاركات
    38

    استفسارات عن أمان المدخلات ..



    السلام عليكم
    لدي أستفسار عن أمان المدخلات
    مثلاً ليكن لدينا الكود التالي:
    كود PHP:
    echo $_GET['msg']; 
    وليكن اسم الصفحة index.php
    فنجرب أن ندخل الرابط التالي:
    index.php?msg=it's good
    النتيجة هي طباعة
    it\'s good
    يعني أنه يتم وضع باك سلاش عند المدخلان POST و GET قبل الرموز ' و " و \ تلقائياً بدون استعمال أي دالة php
    السؤال الآن من الذي يفعل هذا:
    المتصفح ولا المخدم؟؟؟؟؟


    فلو كان المتصفح:
    يستطيع المخترق ببساطة برمجة متصفح خاص لا يقوم بهذا وبالتالي تمكنه من ثغرات sql injection
    ولو اعتمدنا الدالة addslashes للحماية المشكلة هنا أنه ماذا لو كان زائراً عادياً فيصبح الناتج:
    it\\\'s good
    وبالتالي يتم ادخال it\'s good إلى قاعدة البيانات
    هذا لو كان المتصفح

    ولكن لو كان المخدم:
    فالسؤال هل يوجد خيار في php.ini يتحكم باضافة باك سلاش تلقائياً وما هو


    سؤال آخر: ماهي وظيفة ال safe_mode في php.ini بالضبط ؟؟ وما كيف تأثر على أكواد php؟؟ هل لها علاقة بالمدخلات POST وGET؟؟


    وشكراً







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


    لفحص اذا كان من المتصفح ام من السيرفر
    ننشئ ملف html عادي على جهازنا ونرسل له متغير GET
    محتوى ملف الهتمل هو كود جافاسكربت يطبع الرابط
    <script>
    alert(location.href);
    </script>
    ينتج التالي:
    file:///C:/Users/ahmad/Desktop/aa.html?msg=it%27sgood

    ماذا يفعل المتصفح للرابط؟
    يعمل urlencode للعلامات غير الرقم-حرفية

    من اين السلاش اذًا؟
    ربما من السيرفر من خاصية magic qoutes
    وهي "ستذهب" من الاصدارات القادمة
    http://php.net/manual/en/security.magicquotes.php

    منطقيًا سؤالك جيد
    قبل ان نعمل addslashes نسأل إذا كانت هذه القيمة مفعلة
    إذا نعم، لا نعمل اسكيب
    إذا لا نعمل اسكيب
    http://php.net/manual/en/function.ge...quotes-gpc.php

    حل قوي جدًا لثغرات ال sql injection:
    ال static binding
    يعني نبني الاستعلام في البداية دون وضع قيم فيه
    بعد ذلك نضيف المتغيرات بدوال اخرى
    ولكن هنا ال php تعلم ان هذه القيم هي لمتغيرات وليس لها علاقة بمبنى الاستعلامات
    اي انها قيم ثابتة -scalars

    هذه الامور موجودة في مكتبة PDO

    كود PHP:
    /* Execute a prepared statement by binding PHP variables */
    $calories 150;
    $colour 'red';
    $sth $dbh->prepare('SELECT name, colour, calories
        FROM fruit
        WHERE calories < :calories AND colour = :colour'
    );
    $sth->bindParam(':calories'$caloriesPDO::PARAM_INT);
    $sth->bindParam(':colour'$colourPDO::PARAM_STR12);
    $sth->execute(); 
    هذه الخاصية موجودة في الجافا والدوت نيت بشكل افتراضي
    وعادة ما تؤخذ كدليل على سهولة لغة ال php بالنسبة لها
    إذ ان الاستعلام في ال php بسطر واحد
    بينما في هذه اللغات بعدة سطور=> ينتج ان ال php افضل
    لكن في الحقيقة ، إذا عملنا نفس الامور، فإن عدد السطور سيكون متساو ٍ تقريبًا





    التعديل الأخير تم بواسطة ahmad sadiq ; 21-03-2011 الساعة 11:54 PM

  3. #3
    عضو نشيط
    تاريخ التسجيل
    Aug 2010
    المشاركات
    38


    شكراً لك






  4. #4
    عضو نشيط
    تاريخ التسجيل
    Apr 2010
    المشاركات
    119


    شكرا للافادة






  5. #5
    عضو نشيط
    تاريخ التسجيل
    Aug 2010
    المشاركات
    38


    في الاصدارات القادمة عندما تذهب خاصية magic qoutes

    ماذا سوف ينتج عن هذا الكود:
    كود PHP:
    if(get_magic_quotes_gpc()){
     echo 
    "تعمل";
    } else {
     echo 
    "لاتعمل";

    هل تنفيذ هذا الكود في الاصدارات القادمة سوف يؤدي إلى ظهور رسالة "لا تعمل"

    أو انها سوف تؤدي إلى ظهور رسالة:
    Fatal error:call to undefined function get_magic_quotes_gpc






  6. #6
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    اعتقد ان الرسالة التي سوف تظهر هي الخاصة بال DEPRECATED
    لكن للاحتياط استعمال الدالة function_exists لفحص وجود الدالة
    وضع @ قبل الدالة حتى تمنع طباعة الاخطاء على الشاشة
    يعني
    كود PHP:
    if (function_exists("get_magic_qoutes_gpc") && @get_magic_qoutes_gpc()) 







  7. #7
    عضو نشيط
    تاريخ التسجيل
    Aug 2010
    المشاركات
    38


    لا أخي إن كودك السابق سوف يمنع ظهور الخطأ ولكن لو كان من نوع Fatal error سوف يتوقف الكود عن العمل دون ظهور رسالة خطأ فالطريقة الصحيحة أكثر:
    كود PHP:
    if(function_exists("get_magic_qoutes_gpc")){
      echo 
    get_magic_qoutes_gpc();








  8. #8
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    لقد وضعت الشرطين في جملة واحدة

    كيف تُقرأ جمل الشرط المركبة من قبل لغة البرمجة؟

    شرط1 && شرط2
    (يجب ان يتحقق الشرطان معًا)

    اذا كان الشرط الاول خطأ - إذًا كل الجملة خطأ - لا نفحص الشرط 2
    إذا كان الشرط الأول صحيح - عندها فقط نفحص الثاني لإنه ما زالت هناك امكانية ان يكون الشرط الكبير خاطئ

    شرط1 || شرط 2
    (يجب ان يتحقق شرط واحد او كلاهما)

    إذا كان الشرط الاول صحيح،إذًا كل الجملة صحيحة - لا نفحص الشرط الثاني
    إذا كان الاول خاطئ، وقتها نفحص الثاني واذا كان صحيح إذًا كل الجملة صحيحة





    التعديل الأخير تم بواسطة ahmad sadiq ; 22-03-2011 الساعة 04:55 PM





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

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

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