صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 25

الموضوع: [كلاس] dsSafer للحماية من ثغرات ال XSS, SQL Injection, Local File Include

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

    Thumbs up [كلاس] dsSafer للحماية من ثغرات ال XSS, SQL Injection, Local File Include



    السلام عليكــم ورحمـة الله وبركاتــه

    بســم الله الـرحمــن الرحيــم

    اخواني الأعزاء..

    كلاس الـ dsSafer هو صنف للحمايه من اخطار
    1. XSS
    2. SQL INJECTION
    3. LOCAL FILE INCLUDE
    4. REMOTE FILE INCLUDE
    محتويات الصنف
    1) المتغيرات العامه التي يستلزم اعدادها
    $dsTags
    يحتوي على الوسوم المسموحه، وهو من نوع نص، مثال
    كود PHP:
    <div>,<br>,<a
    فإن تركتها فارغه.. فهذا يعني انه غير مسموح بأي وسم هتمل..
    وان كتبت فقط 'all' فهذا يعني انك ترغب بالسماح بجميع وسوم الهتمل


    $dsAttributes
    وهو من نوع مصفوفه.. ويحتوي على وسوم الهتمل وخواصها المسموحه، مثال
    كود PHP:
    array(
    'img' => 'src,alt',
    'a' => 'href'
    ); 
    فإن تركتها فارغه.. فإن هذا يعني أنك تسمح بجميع الخواص للوسوم المسموحه


    $dsQuotes
    وهو من نوع الثوابت المعروفه في الphp القيم المسموحه فيه هي:
    كود PHP:
    ENT_COMPAT
    ENT_QUOTES
    ENT_NOQUOTES 
    $dsCharset
    وهو متغير نصي، يحتوي على نوع الترميز المستخدم


    $dsDBLink
    وهو متغير نصي.. يحتوي على اسم المتغير الذي يحتوي على مقبض الاتصال بالقاعده



    2) الدوال العامه وعملها:

    الداله dsInclude()
    وهي داله تقوم بنفس عمل require, require_once, include, include_once
    فائدتها انها تقوم بتأكد من ان المستخدم لم يقم بمحاولة تغيير مسار المجلد او الملف المراد استدعائه..
    طريقة الاستخدام
    كود PHP:
    $myPath 'path/to/folder/to/file/';
    $dsSafer dsSafer();
    $dsSafer->dsInclude('myPath'); 
    الداله dsInput()
    هذه الداله تختص بالمدخلات التي قام بادخالها المستخدم سواء عن طريق نموذج او عن طريق الضغط على وصلة في الموقع تحتوي على متغيرات مرسله من قبل صفحه اخرى.
    وتحتوي على 7 باراميترات.. 2 منهم هما الاجباريان
    الباراميترات الاجباريه
    $dsStr وهو النص المراد تأمينه.. سواء كان نص او متغير يحتوي على نص
    $dsType وهو نوع التأمين المراد عمله على النص.. والانواع المتوفر هي
    • str يقوم هذا النوع بتأمين النص من اخطار ال xss دون ال sql inj معتمد في ذلك على الاعدادات السابقه في متغيرات الصنف العامه..
    • int يقوم بجل المتغير يحتوي على ارقام فقط.. فهو يأمن المتغير من اخطار ال xss وال sql inj
    • float لجعل المتغير من نوع قيمة عشريه
    • bool لجعل المتغير من نوع 0 او 1 (true,false)
    • array لجعل المتغير من نوع مصفوفه
    • sql لتأمين المتغير من اخطار ال xss وال sql ويتم استدعاء هذا النوع فقط للمتغيرات النصيه التي سيتم ادخالها للقاعده.. دون المتغيرات العدديه.. لأن نوع ال int يكفي بالنسبة للمتغيرات العدديه
    الباراميترات الاختياريه..
    $dsAllowedTags
    $dsAllowedAttributes
    $dsQuotesStyle
    $dsUsedCharset
    $dsUsedDBLink
    وهم بالضبط مثل المتغيرات العامه للصنف.. والفائده منها.. ان اردت ضبط اعدادات عامه لجميع المتغيرات باستثناء متغير او اكثر فيمكن الاستفاده من هذه المتغيرات.. فكل ما ينطبق على المتغيرات العامه للصنف ينطبق على هذه الباراميترات الاختيارية



    الداله dsOutput()
    وهي للتعامل مع ماتريد اخراجه للعرض او الطباعه
    وتحتوي على 4 باراميترات.. 2 منهم اجبارين
    الباراميترات الاجباريه
    $dsStr وهو النص المراد اخراجه
    $dsType وهو نوع الاخراج المراد عرضه.. والانواع هي
    • sql ان كان النص قد تم جلبه من القاعده.. فيجب اولا استدعاء هذا النوع ومن ثم احد الانواع التاليه
    • plain لتجريد النص من جميع وسوم الهتمل ومعاملته كنص عادي دون اي علاقه بالهتمل
    • html لعرض النص مع تطبيق مايحتويه من وسوم هتمل
    • code لعرض النص ووسوم الهتمل على هيئة وسوم مقروءة دون تطبيقها
    الباراميترات الاختياريه
    $dsQuoteStyle
    $dsUsedCharset
    وينطبق عليهما ما سبق التكلم عنه في المتغيرات العامه للصنف ولذا الحكمه الموجوده في الداله dsInput()




    طريقة الاستخدام

    كود PHP:
    <?php

    $dsSafer 
    dsSafer();
    //  الاعدادات
    $dsSafer->dsCharset    'UTF-8';
    $dsSafer->dsQuotes     ENT_QUOTES;
    $dsSafer->dsDBLink     $link//$link = the connection to mysql
    $dsSafer->dsTags       '<br>,<b>,<i>,<p>,<div>,<hr>,<ul>,<ol>,<li>,<img>,<a>'// 'all' = allow all tags && '' = allow none
    $dsSafer->dsAttributes = array('img' => 'src,alt',  'a' => 'href' );


    //  بدئ عملية الفلترة للمدخلات
    $name $dsSafer->dsInput($_POST['name'], 'str');
    $title $dsSafer->dsInput($_POST['title'], 'str');
    echo 
    $name;
    echo 
    $title;
    //  او بطريقة اخرى ان كان لدينا محموعة متغيرات نريد تطبيق عملية الفلترة عليهم بنفس الخواص والقواعد
    $dsSafer->dsInput(array('_POST'=>'name,title'), 'str');
    echo 
    $name;
    echo 
    $title;


    // للمخرجات
    $newsTitle 'something'// تم جلبه من قاعدة البيانات
    $newsTitle $dsSafer->dsOutput($newsTitle,'sql');
    $newsTitle $dsSafer->dsOutput($newsTitle,'html');
    echo 
    $newsTitle;

    ?>
    لتحميل الصنف: إضغط هنا

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

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

    ملاحظة: الكلاس من برمجتي

    بالتوفيق للجميع





    __________________
    مملكة الموت
    =======================
    100(سبحان الله وبحمده ،،، سبحان الله العظيم) = 0 سيئة


  2. #2
    عضو فعال جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    3,929


    قوي جدا جدا لكنه متقدم ومتطور لدرجة تدفعك للاستغناء عنه
    بالرغم من فائدته العظيمة
    ولكن نشكرك كثيرا علي ترشيحه لنا





    __________________
    تحاور مع العاقل بعقل .. اما ان يقتنع او تقتنع
    وتحاور مع الجاهل بعقل .. اما يطقعش او تفرقش
    وتلك الفاظ لا معنى لها كذلك كلماته

  3. #3
    عضو جديد
    تاريخ التسجيل
    Feb 2008
    المشاركات
    4


    انا عندي مشكلة في ال XSS لكن كما قال سحاب اون لاين ان هذا الكلاس متطور جدا, و للاسف انا مبتدئ في ال php حملت سكريبت لإدارة عيادة طبية, لكن للاسف فيه ثغرة XSS و هذا رابط كود الثغرة Nopaste - XSS Fail و هذا الكود الذي وضعته لسد الثغرة Nopaste - Fail XSS وهل هذا الكود كافي لسد الثغرة, و سؤال اخير هل اي شخص يستطيع استغلال هذا النوع من الثغرات ام مصمم السكريبت فقط و جزاكم الله خيرا






  4. #4
    عضو نشيط
    تاريخ التسجيل
    Aug 2007
    المشاركات
    73


    شكرا على الاطراء الجميل

    ولكن نشكرك كثيرا علي ترشيحه لنا
    بالمناسبة.. الكلاس من برمجتي..

    اتمنى الاطلاع على الكود لابداء التعليقات والانتقادات.. لكي يتم التطوير

    بالتوفيق للجميع





    __________________
    مملكة الموت
    =======================
    100(سبحان الله وبحمده ،،، سبحان الله العظيم) = 0 سيئة

  5. #5
    عضو نشيط
    تاريخ التسجيل
    May 2008
    المشاركات
    114


    مبين عليه كويس << لسه ما بدأت في دورة البرمجة

    بس نخلص برجع بعطيك رأيي !!






  6. #6
    عضو سوبر نشيط
    تاريخ التسجيل
    Nov 2005
    المشاركات
    779


    ما شاء الله .. ابداع اخوي DSQ8.com

    جاري التجربة بس شكله قوي جدا .. و ان شاء الله موفق اخوي في برامجك الاخرى





    __________________
    أهلا و سهلا بكم في :-
    موقع دار الأوائل
    تفضل معنا خدمات الاستضافة
    موقع العبقري لخدمات الاستضافة

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


    مبين عليه كويس << لسه ما بدأت في دورة البرمجة

    بس نخلص برجع بعطيك رأيي !!
    ان شاء الله تخلص وتصير مبرمج محترف

    -------------

    ما شاء الله .. ابداع اخوي DSQ8.com

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

    وبالتوفيق للجميع.





    __________________
    مملكة الموت
    =======================
    100(سبحان الله وبحمده ،،، سبحان الله العظيم) = 0 سيئة

  8. #8
    عضو نشيط
    تاريخ التسجيل
    Aug 2007
    المشاركات
    73


    اعزائي

    هناك بعض التعديلات..

    قم بتحميل الكلاس بعد التعديلات من الرابط التالي إضغط هنا
    او قم باجراء التعديلات التاليه

    السطر 124
    استبدل هذا
    كود PHP:
    $$dsVar = (Array_Key_Exists($dsVar,$dsMethod2)) ? $this->dsInuptTreatment($dsMethod2[$dsVar], $dsType$dsAllowedTags$dsAllowedAttributes$dsQuotesStyle) :False
    بهذا
    كود PHP:
    $$dsVar = (Array_Key_Exists($dsVar,$dsMethod2)) ? $this->dsInuptTreatment($dsMethod2[$dsVar], $dsType$dsAllowedTags$dsAllowedAttributes$dsQuotesStyle,$dsUsedCharset,$dsUsedDBLink) :False
    السطر 128
    استبدل هذا
    كود PHP:
    $$dsVars = (Array_Key_Exists($dsVars,$dsMethod2)) ? $this->dsInuptTreatment($dsMethod2[$dsVars], $dsType$dsAllowedTags$dsAllowedAttributes$dsQuotesStyle) :False
    بهذا
    كود PHP:
    $$dsVars = (Array_Key_Exists($dsVars,$dsMethod2)) ? $this->dsInuptTreatment($dsMethod2[$dsVars], $dsType$dsAllowedTags$dsAllowedAttributes$dsQuotesStyle,$dsUsedCharset,$dsUsedDBLink) :False
    السطر 133
    استبدل هذا
    كود PHP:
    $dsReturn $this->dsInuptTreatment($dsStr$dsType$dsAllowedTags$dsAllowedAttributes$dsQuotesStyle); 
    بهذا
    كود PHP:
    $dsReturn $this->dsInuptTreatment($dsStr$dsType$dsAllowedTags$dsAllowedAttributes$dsQuotesStyle,$dsUsedCharset,$dsUsedDBLink); 
    السطر 159
    استبدل هذا السطر
    كود PHP:
    $dsReturn html_entity_decode($dsReturn$dsQuoteStyle$dsUsedCharset); 
    بهذا
    كود PHP:
    $dsReturn html_entity_decode($dsReturn$dsQuotesStyle$dsUsedCharset); 
    السطر 162
    استبدل هذا
    كود PHP:
    $dsReturn = ($this->dsMBConvert ? @mb_convert_encoding($dsReturn$this->dsCharset$this->dsCharset) : $dsReturn); 
    بهذا
    كود PHP:
    $dsReturn = ($this->dsMBConvert ? @mb_convert_encoding($dsReturn$dsUsedCharset$dsUsedCharset) : $dsReturn); 
    السطر 164
    استبدل هذا
    كود PHP:
    $dsReturn htmlentities($dsReturn$this->dsQuotes$this->dsCharset); 
    بهذا
    كود PHP:
    $dsReturn htmlentities($dsReturn$dsQuotesStyle$dsUsedCharset); 
    السطر 187
    استبدل هذا
    كود PHP:
    $dsReturn html_entity_decode($dsReturn$dsQuoteStyle$dsUsedCharset); 
    بهذا
    كود PHP:
    $dsReturn html_entity_decode($dsReturn$dsQuotesStyle$dsUsedCharset); 
    السطر 190
    استبدل هذا
    كود PHP:
    $dsReturn = ($this->dsMBConvert ? @mb_convert_encoding($dsReturn$this->dsCharset$this->dsCharset) : $dsReturn); 
    بهذا
    كود PHP:
    $dsReturn = ($this->dsMBConvert ? @mb_convert_encoding($dsReturn$dsUsedCharset$dsUsedCharset) : $dsReturn); 
    السطر 194
    استبدل هذا
    كود PHP:
    $dsReturn2 = @MySQL_Real_Escape_String($dsReturn,$this->dsDBLink); 
    بهذا
    كود PHP:
    $dsReturn2 = @MySQL_Real_Escape_String($dsReturn,$dsUsedDBLink); 
    السطر 200
    استبدل هذا
    كود PHP:
    $dsReturn htmlentities($dsReturn$this->dsQuotes,$this->dsCharset); 
    بهذا
    كود PHP:
    $dsReturn htmlentities($dsReturn$dsQuotesStyle,$dsUsedCharset); 
    السطر 244
    استبدل هذا
    كود PHP:
    $dsReturn htmlentities($dsReturn$this->dsQuotes,$this->dsCharset); 
    بهذا
    كود PHP:
    $dsReturn htmlentities($dsReturn$dsQuoteStyle,$dsUsedCharset); 
    السطر 281
    استبدل هذا
    كود PHP:
    $text = ($this->dsMagicQuotes == 0) ? $text $this->dsStripSlashes($text); 
    بهذا
    كود PHP:
    $text $this->dsStripSlashes($text); 
    بالتوفيق





    __________________
    مملكة الموت
    =======================
    100(سبحان الله وبحمده ،،، سبحان الله العظيم) = 0 سيئة

  9. #9


    هناك عدة أمور فهمتها
    وبعضها بحثت عنها وفهمت بعض الدوال

    مثلا
    array_key_exists
    ولكن يقول
    5.3.0 This function doesn't work with objetcs anymore, property_exists() should be used in this case.

    وهناك بالطبع الكثير مما لم أفهمة

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

    ليت هناك من يشرح لنا مثل هذه الأمور فالحماية من أهم الأمور الآن





    __________________
    السيف أصدق أنباء من الكتب

  10. #10
    عضو نشيط
    تاريخ التسجيل
    Aug 2007
    المشاركات
    73


    عزيزي
    5.3.0 This function doesn't work with objetcs anymore, property_exists() should be used in this case
    هل هذا الخطأ من الكلاس؟
    ومتى يظهر بالضبط؟
    وماهو اصدار ال php الذي تستخدمه ؟
    وياريت لو تعطينا نص الخطأ مع رقم السطر

    بالتوفيق





    __________________
    مملكة الموت
    =======================
    100(سبحان الله وبحمده ،،، سبحان الله العظيم) = 0 سيئة

  11. #11
    عضو نشيط
    تاريخ التسجيل
    Aug 2007
    المشاركات
    73


    اعزائي..
    هناك بعض التعديلات والتطويرات

    السطر 115
    استبدل هذا
    كود PHP:
    If(Is_Array($dsStr)) { 
    بهذا
    كود PHP:
    If(Is_Array($dsStr)&&(strtolower($dsType)<>'array')) { 

    السطر 156
    استبدل هذا
    كود PHP:
    $dsReturn trim($dsStr); 
    بهذا
    كود PHP:
    $dsReturn = (Is_Array($dsStr) ? $dsStr:trim($dsStr)); 
    بالتوفيق





    __________________
    مملكة الموت
    =======================
    100(سبحان الله وبحمده ،،، سبحان الله العظيم) = 0 سيئة

  12. #12


    أقصد المكتوب عن الدالة هنا
    PHP: array_key_exists - Manual





    __________________
    السيف أصدق أنباء من الكتب

  13. #13
    عضو نشيط
    تاريخ التسجيل
    Aug 2007
    المشاركات
    73


    عزيزي الداله array_key_exists
    هي للاستعلام عن فهرس معين في المصفوفه.. هل هو موجود ام لا
    والاستخدام
    كود PHP:
    array_key_exists($key,$array
    اما السطر الذي ذكرته فهو يفيد ان هذه الداله اصبحت فقط للمصفوفات
    في حين البديل عنها في الكائنات (الاصناف) هي property_exists()

    بالتوفيق





    __________________
    مملكة الموت
    =======================
    100(سبحان الله وبحمده ،،، سبحان الله العظيم) = 0 سيئة

  14. #14
    عضو نشيط جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    597


    اشكرك بعنف

    والله كلاس رااائع جدا .. وانا قاعد أبرمج سكريبت جديد وكبير نوعا ما .. ورح استخدم هالكلاس الرائع

    بس اتمنى ان تقوم بعمل موقع بسيط له لكي تقوم بطرح آخر التعديلات والإصدارات .. لأني شايف فيه تعديلات جديدة عندك

    بالانتضار






  15. #15
    عضو نشيط
    تاريخ التسجيل
    Aug 2007
    المشاركات
    73


    شكرا لك عزيزي على الاطراء الذي يثلج القثلب

    وان شاء الله سأقوم بما ذكرت في القريب العاجل لأني حاليا مشغول بمشروع معين

    بالتوفيق للجميع





    __________________
    مملكة الموت
    =======================
    100(سبحان الله وبحمده ،،، سبحان الله العظيم) = 0 سيئة





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

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

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