إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

الحماية المطلقة لبرمجياتك اكواد شروحات للحماية متجدد

تقليص
هذا موضوع مثبت
X
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • الحماية المطلقة لبرمجياتك اكواد شروحات للحماية متجدد


    اولا الموضوع هذا ان شاء الله سيكون متجدد
    وساقوم بتعريف الثغرات وماهي الثغرات وناخذها تدريجيا في الردود طبعا بمكان الجميع المساهمه.

    ماهي الثغرات ؟؟
    الثغرات بختصار عام هي ادخال او تحويل اكواد غير مرغوب بها إلى برمجياتنا.

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

    طيب ماذا علي ان افعل في هذة الحالة ؟ الجواب ان تقوم بتنقيح كودك البرمجية وعدم ظهور الاخطأ

    كيف اقوم بتنقيح كودي ؟
    وكيف اقوم بعدم السماح للاخطأ بالظهور ؟

    الجواب هنا اولا سنقوم بتعريف اشهر الثغرات ؟




    1 - ثغرات حقن قواعد البيانات Sql Injection
    2 - ثغرات XSS وتعرف بـ Cross site scripting
    3 - ثغرات File Include و remote file include
    4 - ثغرات او مشكلة cookies سرقة الكوكز وهي تنتج من ثغرة xss والحقن وسنتطرق لها جميعا
    5 - ثغرات او اخطأ عدم تنقيح المدخلات
    6 - ثغرات او ماهي الاكواد التي يجب حمايتها عند استخراج البيانات ؟
    7 - كيف نقوم بستبدال المحررات html إلى محررات من نوع bbcode
    8- الحماية من اللود
    9 - الحماية من السبام وتكرار البيانات بـ token
    10 - حماية الدخول للوحة التحكم

    هذا مايدور بخاطري حاليا ولا استقني عن من لدية معلومة او شرح الثغرات وطريقة الحماية منها
    وسيكون هذا الموضوع شامل ان شاء الله


    طبعا انا ماراح اشرح الثغرات حاليا لانني سوف اقوم بعمل مسودة لمن اراد ان يشارك داخل الموضوع
    وسوف تكون كمفتاح اساسي لكي يكون الموضوع مرتب مفهوم بشكل اوسع


    يذكر في المسودة مايلي

    اسم الثغرة :
    ماهي اضرار الثغرة :
    ماهي الطريقة الخاطئة في البرمجة التي تجلب هذه الثغرة :
    ترقيع الثغرة :

    تاخذ هذه المسودة وتوضع في الرد مع اضافة مايلزم وشرح مفصل للحماية منها لتعم الفائدة.

    مع ملاحظة ؟ عدم ذكر الاستقلال لان كما نعلم ضعاف النفوس الله يهديهم

    لا مانع من النقاش داخل الموضوع على طرق الحماية من الثغرات
    والله الموفق




  • #2
    سم الثغرة : ثغره SQL
    ماهي اضرار الثغرة : امكانية حقن القواعد .
    ماهي الطريقة الخاطئة في البرمجة التي تجلب هذه الثغرة : عدم استخدام دالة intval() بشكل صحيح
    ترقيع الثغرة :
    رمز PHP:
    $id = intval($_GET['id']) < 0 ? 0 : intval($_GET['id']);





    تعليق


    • #3
      بالنسبه لحقن قواعد البيانات

      لاداعي لـرمز PHP:
      intval($_GET['id']);

      في mysqli و PDO


      مثال في PDO

      رمز PHP:
      $id = $_GET['id'];
      $test = "سبحان الله وبحمده سبحان الله العظيم";


      $ddu = $conn->prepare("update table set test=:test where id=:id ");
      $ddu->bindParam(':test',$test,PDO::PARAM_STR);
      $ddu->bindParam(':id',$id,PDO::PARAM_INT);
      $ddu->execute();




      تعليق


      • #4
        اسم الثغرة : ثغرات حقن قواعد البيانات Sql Injection
        ماهي اضرار الثغرة : استخراج معلومات قواعد البيانات والتعديل عليها كـ معلومات الادمن

        ماهي الطريقة الخاطئة في البرمجة التي تجلب هذه الثغرة :
        استخدام المتغير بدون حماية مثال
        رمز PHP:
        $id = $_GET['id'];

        ترقيع الثغرة :
        رمز PHP:
        $id = intval($_GET['id']);

        تفاصيل اخرى وحماية اكثر
        الان الدالة تقوم بالسماح بالارقام فقط لو جاء شخص يبغى يحقن قواعد البيانات مثال
        رمز PHP:
        localhost/index.php?id=1'

        الدالة ستعتبر السنقل غير موجود بتحذفة
        طيب لو جاء شخص وقام بعمل التالي
        رمز PHP:
        localhost/index.php?id='

        من غير مايضيف رقم ماذا سيحدث
        الدالة ستغير السنقل إلى رقم 0 ونحن نعلم ان قاعدة البيانات لا تتعامل مع 0 فالمواضيع والحقول تبدا برقم 1
        اذا الدالة تحتاج شرط بسيط لكن مفيد
        رمز PHP:
        if(empty($id) or $id == 0)

        لو كان المدخل فارغ
        رمز PHP:
        localhost/index.php?id=

        او يساوي 0
        رمز PHP:
        localhost/index.php?id='<div class'>

        بتقول كيف 0 وانت واضع هذا الكود بعد =
        رمز PHP:
        '<div class'>

        مو احنا قلنا ان دالة intval تقوم بتحويل جميع الحروف والرموز إلى 0
        اذا اي شيء يكتب بعد = يعتبر 0 وبقاعدة البيانات مافي موضوع بدايتة 0 لذلك ليه نفتح المجال للاستعلام ونحن نعلم ان مافي موضوع بدايتة 0

        لتكون الدالة كاملة
        رمز PHP:

        $id
        = intval($_GET['id']);
        if(empty(
        $id) or $id == 0){
        echo
        "رابط غير صحيح";
        }else{
        // here query #= select * from table where id='".$id."'
        }

        بكذا انت حمية نفسك من حقن قاعدة البيانات في حالة كان الاستعلام يعتمد على رقم
        _____________________________

        ننتقل للخطوة الاخرى وهي في حالة اننا نجلب الموضوع حسب الاسم اي ليسى برقم الايدي
        هنا دالة intval لانستطيع تطبيقها على الكود
        رمز PHP:
        $name = $_GET['name'];

        ماهو الحل الان المتغير غير محمي ويمكن حقن القاعدة والتلاعب بقيمة المتغير

        الحل هو نقوم بعمل دالة function بسيطة تحمي من الحقن و xss

        الدالة كاملة شرح الاكواد بالداخل
        رمز PHP:
        function clears($val){
        global
        $db; // جلب متغير الاتصال بالقاعدة
        $val = $db->real_escape_string($val); // منع حقن القاعدة باضافة باك سلاش قبل ' السنقل
        $val = strip_tags($val); // حذف اكواد html
        $val = trim($val); // حذف المسافات من البداية والنهاية
        return $val; // ارجاع قيمة الدالة
        }

        الاستخدام
        رمز PHP:
        $name = clears($_GET['name']);

        طيب الان نحتاج شرط بسيط ليتأكد ان فيه قيمة داخل المتغير name

        رمز PHP:
        if(!isset($name) or empty($name))

        اذا ماكان فية قيمة للمتغير او فارغ نطبع خطأ ليصبح الكود كامل

        رمز PHP:
        function clears($val){
        global
        $db; // جلب متغير الاتصال بالقاعدة
        $val = $db->real_escape_string($val); // منع حقن القاعدة باضافة باك سلاش قبل ' السنقل
        $val = strip_tags($val); // حذف اكواد html
        $val = trim($val); // حذف المسافات من البداية والنهاية
        return $val; // ارجاع قيمة الدالة
        }

        $name = clears($_GET['name']);
        if(!isset(
        $name) or empty($name)){
        echo
        "رابط غير صحيح";
        }else{
        // here query #= select * from table where id='".$name."'
        }

        بالتوفيق


        تعليق


        • #5
          لحماية session
          يعمل تحديث لمفاتيح السيشن مع كل تحديث حتا يصعب سرقة المفاتيح السيشن
          أستخدمها سهل
          رمز PHP:
          <?php
          session_start
          ();
          session_regenerate_id(true);
          $_SESSION['username'] = 'boooooo';

          عن (true) اذا ماكانت موجوده كل مره راح يضع ملف جديد لسيشن

          اذا كانت موجوده كل مره راح يغير الملف القديم بوحد جديد


          تعليق


          • #6
            اسم الثغرة : ثغرات XSS وتعرف بـ Cross site scripting
            ماهي اضرار الثغرة : سرقة الكوكز واضافة اكواد خبيثة لتحويل الصفحات وسرقة معلومات

            ماهي الطريقة الخاطئة في البرمجة التي تجلب هذه الثغرة : عدم تأمين المدخلات + المخرجات اللتي تستخدم في عملية ادخال للقاعدة
            مثال على كود غير محمي
            رمز PHP:
            // حماية استغلال المدخلات وتنفيذ ثغرة xss

            if(isset($_POST['sub'])){
            echo
            $name = $_POST['name'];
            }


            ?>

            <form method="post">
            <input type="text" name="name" />
            <input type="submit" value="send" name="sub" />
            </form>

            ترقيع الثغرة : حماية المدخل او المستخرج من اكواد html سوا حذفها او تعطيلها

            مثال للحماية
            رمز PHP:
            echo $name = strip_tags($_POST['name']);

            والفانكشن هذه تكفي للحماية
            رمز PHP:
            function clears($val){
            $val = strip_tags($val);
            $val = addslashes($val);
            $val = trim($val);
            return
            $val;
            }

            ليصبح الكود كامل مع طريقة الاستخدام

            رمز PHP:
            <?php


            // حماية استغلال المدخلات وتنفيذ ثغرة xss

            function clears($val){
            $val = strip_tags($val);
            $val = addslashes($val);
            $val = trim($val);
            return
            $val;
            }

            if(isset(
            $_POST['sub'])){
            echo
            $name = clears($_POST['name']);
            }


            ?>

            <form method="post">
            <input type="text" name="name" />
            <input type="submit" value="send" name="sub" />
            </form>

            بكذا انت حمية المدخل بس باقي اشياء يجب حمايتها مثل متغيرات الكوكز او السيشن
            مثال للكوكز

            لانشاء كوكز
            رمز PHP:
            $value = "cokieid1";
            $time = time()+3600;
            setcookie('namecooke',$value,$time);

            بمكانك تمرير اسم الفانكشن بالشكل التالي
            رمز PHP:
            $value = clears("cokieid1");
            $time = clears(time()+3600);

            هل هذا يكفي لا طبعا طيب لو قام المخترق يبغى يعدل على الكوكز مثال


            لو فرضنا ان قيمة الكوكز اسم يتم طباعتة في المتصفح بكذا ممكن ان يتم استغلال عبر الكوكز او السيشن

            طيب ماهو الحل
            نقوم ايضا بحماية الكوكز عند الاستخراج
            رمز PHP:
            echo $_COOKIE['namecooke'];

            ليصبح بستخدام الفانكشن
            رمز PHP:
            echo clears($_COOKIE['namecooke']);

            باقي اخر خطوه وهي عند مثال تبغى تجلب بيانات الموضوع ، والموضوع له بيانات محفوظة بجدول اخرى مثل صاحب الموضوع + مثال تعليقات الموضوع

            تقوم بالاستعلام عن الموضوع عادي مع حمايته ثم تستخرج البيانات
            رمز PHP:
            $row = $query->fetch_array(MYSQLI_ASSOC);
            $id = $row['id'];
            $name = $row['name'];

            طيب لو اسبغى استعلم عن صاحب الموضوع اكيد بسوي كذا
            رمز PHP:
            $quere = "select * from users where id = '".$id."'";

            بحيث ان المتغير $id هو اللي استخرجنا به ايدي الموضوع
            الكود كامل
            رمز PHP:
            $row = $query->fetch_array(MYSQLI_ASSOC);
            $id = $row['id'];
            $name = $row['name'];

            $quere = "select * from users where id = '".$id."'";

            بعد الحماية
            رمز PHP:
            $id = intval($row['id']);

            ليصبح الكود كامل
            رمز PHP:
            $row = $query->fetch_array(MYSQLI_ASSOC);
            $id = intval($row['id']);
            $name = $row['name'];

            $quere = "select * from users where id = '".$id."'";

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

            ولا في حالة ان المستخرج مؤمن من قبل ولا يستخدم في عملية استخراج اخرى بمعنى اذا امنت المدخل لا حاجة لحمايته مرة اخرى إلا اذا بتستخدمة في استعلام اخر

            واذا اردت حمايته يفضل حذف اكواد السنقل والباك سلاش بستبدالها

            ولنا شرح اكثر في رد اخر ان شاء الله
            تحياتي ودمتم بحفظ الرحمن



            الصور المصغرة المرفقة

            تعليق


            • #7
              دالة حماية المدخالات عن get and post
              قمت بتغيير الدالة htmlspecialchars التي تطبع كود الاتش تي ام ال كما هو
              بدلا من الدالة strips_tags التي تحذف كود الاتش تي ام ال
              حسب فهمي للشرح في موقع البي اتش بي ان الدالة htmlspecialchars اامن من الدالةstrips_tags
              والحكم لاهل الاختصاص
              رمز PHP:
              function make_safe($str)
              {
              return
              htmlspecialchars(addslashes(trim($str)));
              }
              $username =@make_safe($_POST['user']);
              $password =make_safe(md5(@$_POST['password']));
              $email =make_safe(@$_POST['email']);




              تعليق

              يعمل...
              X