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

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

  1. #1
    المدير العام الصورة الرمزية TN Land
    تاريخ التسجيل
    May 2013
    المشاركات
    2,261
    شكراً
    37
    شكر 69 مرات في 62 مشاركات
    مقالات المدونة
    9

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


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

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

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

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

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

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




    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. #2
    المدير العام الصورة الرمزية TN Land
    تاريخ التسجيل
    May 2013
    المشاركات
    2,261
    شكراً
    37
    شكر 69 مرات في 62 مشاركات
    مقالات المدونة
    9
    سم الثغرة : ثغره SQL
    ماهي اضرار الثغرة : امكانية حقن القواعد .
    ماهي الطريقة الخاطئة في البرمجة التي تجلب هذه الثغرة : عدم استخدام دالة intval() بشكل صحيح
    ترقيع الثغرة :
    رمز PHP:
    $id = intval($_GET['id']) < 0 ? 0 : intval($_GET['id']);








  3. #3
    المدير العام الصورة الرمزية TN Land
    تاريخ التسجيل
    May 2013
    المشاركات
    2,261
    شكراً
    37
    شكر 69 مرات في 62 مشاركات
    مقالات المدونة
    9
    بالنسبه لحقن قواعد البيانات

    لاداعي لـرمز 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. #4
    المدير العام الصورة الرمزية TN Land
    تاريخ التسجيل
    May 2013
    المشاركات
    2,261
    شكراً
    37
    شكر 69 مرات في 62 مشاركات
    مقالات المدونة
    9
    اسم الثغرة : ثغرات حقن قواعد البيانات 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. #5
    المدير العام الصورة الرمزية TN Land
    تاريخ التسجيل
    May 2013
    المشاركات
    2,261
    شكراً
    37
    شكر 69 مرات في 62 مشاركات
    مقالات المدونة
    9
    لحماية session
    يعمل تحديث لمفاتيح السيشن مع كل تحديث حتا يصعب سرقة المفاتيح السيشن
    أستخدمها سهل
    رمز PHP:
    <?php
    session_start
    ();
    session_regenerate_id(true);
    $_SESSION['username'] = 'boooooo';

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

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





  6. #6
    المدير العام الصورة الرمزية TN Land
    تاريخ التسجيل
    May 2013
    المشاركات
    2,261
    شكراً
    37
    شكر 69 مرات في 62 مشاركات
    مقالات المدونة
    9
    اسم الثغرة : ثغرات 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. #7
    المدير العام الصورة الرمزية TN Land
    تاريخ التسجيل
    May 2013
    المشاركات
    2,261
    شكراً
    37
    شكر 69 مرات في 62 مشاركات
    مقالات المدونة
    9
    دالة حماية المدخالات عن 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']);








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

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  
منتديات تونيزيا لاند
مدونات مجلة أخبار رياضة عالم الستلايت و التكنولوجيا والموبايل و الانترنات
Join us