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

الموضوع: [دعو للنقاش] ماذا لو اردت ان تخزن اكواد HTML+Javascriptفى قاعدة البيانات دون ان تخترق

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

    [دعو للنقاش] ماذا لو اردت ان تخزن اكواد HTML+Javascriptفى قاعدة البيانات دون ان تخترق



    بسم الله الرحمن الرحيم
    مرحبا باعضاء سوالف الكريم , وخاصة قسم PHP
    بحثت عن كثير من المواضيع التى تتحدث عن تخزين اكواد HTML داخل قاعدة البيانات وعن استخدام دالة Preg_match واخواتها

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

    ولكن حتى الان اخشى تماما من ان تتم عمليات اختراق وخاصة SQL Injection

    ما اريد ان افعله , المستخدم سوف يقوم بوضع الكود اللى يبية ,, على سبيل المثال
    هذه الويدجت
    http://www.widgetbox.com/widget/youtube-videos
    تحتوى على الكود
    كود HTML:
    <script type="text/javascript" src="http://cdn.widgetserver.com/syndication/subscriber/InsertWidget.js"></script><script type="text/javascript">if (WIDGETBOX) WIDGETBOX.renderWidget('7bf79bbd-c63c-43c9-aa94-dfda74c77127');</script><noscript>Get the <a href="http://www.widgetbox.com/widget/youtube-videos">YouTube Videos</a> widget and many other <a href="http://www.widgetbox.com/">great free widgets</a> at <a href="http://www.widgetbox.com">Widgetbox</a>! Not seeing a widget? (<a href="http://docs.widgetbox.com/using-widgets/installing-widgets/why-cant-i-see-my-widget/">More info</a>)</noscript>
    ومثال اخر عند العم جوجل
    http://www.google.com/webelements/#!/calendar

    اريد تخزين مثل هذه الاكواد

    كما اريد ايضا تخزين الاكواد الخاصة ب
    http://ckeditor.com/demo

    دون ادنى عملية اختراق للموقع او القاعدة
    بالتوفيق للجميع
    عبدالعزيز





    التعديل الأخير تم بواسطة edafa.info ; 28-09-2011 الساعة 09:03 AM
    __________________
    FaceBook Application Developer
    تعلم برمجة سكريبت جلب المحتوى خطوة بخطوة
    مشروعى داخل معرض الاتصالات
    لمراسلتي إضغط هنا
    سبحان الله وبحمده سبحان الله العظيم


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


    أعتقد ان موضوع وضع اكواد جافا سكريبت عن طريق المستخدم فيها خطر ليس من sql injection ولكن الخطر الاكبر من XSS من الممكن ان يقوم المستخدم بوضع كود يسرق به كوكيز الأدمين او المستخدمين المسجلين

    على كل , لوضع كود داخل قاعدة بيانات يتم إستخدام دالة addslashes عند الحفظ بقاعدة البيانات
    واستخدام stripslashes عند استرجاع المخزن

    خالص ودي





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

  3. #3
    عضو فعال
    تاريخ التسجيل
    Feb 2008
    المشاركات
    1,759


    أعتقد ان موضوع وضع اكواد جافا سكريبت عن طريق المستخدم فيها خطر ليس من sql injection ولكن الخطر الاكبر من XSS من الممكن ان يقوم المستخدم بوضع كود يسرق به كوكيز الأدمين او المستخدمين المسجلين

    على كل , لوضع كود داخل قاعدة بيانات يتم إستخدام دالة addslashes عند الحفظ بقاعدة البيانات
    واستخدام stripslashes عند استرجاع المخزن

    خالص ودي
    جزاك الله كل خير اخوى ahmadmarafa
    كلام رائع , ولكن ما رايك لو قمنا بفلترة تلك الاكواد التى تتعامل مع الكوكيز ؟





    __________________
    FaceBook Application Developer
    تعلم برمجة سكريبت جلب المحتوى خطوة بخطوة
    مشروعى داخل معرض الاتصالات
    لمراسلتي إضغط هنا
    سبحان الله وبحمده سبحان الله العظيم

  4. #4
    عضو فعال
    تاريخ التسجيل
    Dec 2008
    المشاركات
    1,897


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





    __________________
    راسلني

  5. #5
    عضو فعال
    تاريخ التسجيل
    Feb 2008
    المشاركات
    1,759


    بكل بساطة يمكنك بناء نظام BBCode ضخم قليلاً و يمكنك تضمين اكواد الجافا سكريبت فيه و فلترة جميع الدوال المشبوهة او التي تشكل خطر على المستخدم .
    مرحبا اخوى وضاء
    فكره رائعه .. فكرت بها بالفعل
    شوف
    الموقع فكرته ان لكل مستخدم صفحة خاصة به
    يضع فيها اكواد جافا سكريبت مثل التى ارفقتها بالاعلى كعداد للزوار او widget
    مثل هذه
    http://www.widgetbox.com/widget/youtube-videos

    ولكننى لا يمكننى حصر كل تلك الاكواد
    لذلك افكر فى فلترة الاكواد الخبيثه فحسب

    وجزاك الله كل خير





    __________________
    FaceBook Application Developer
    تعلم برمجة سكريبت جلب المحتوى خطوة بخطوة
    مشروعى داخل معرض الاتصالات
    لمراسلتي إضغط هنا
    سبحان الله وبحمده سبحان الله العظيم

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


    مرحبا اخوى وضاء
    فكره رائعه .. فكرت بها بالفعل
    شوف
    الموقع فكرته ان لكل مستخدم صفحة خاصة به
    يضع فيها اكواد جافا سكريبت مثل التى ارفقتها بالاعلى كعداد للزوار او widget
    مثل هذه
    http://www.widgetbox.com/widget/youtube-videos

    ولكننى لا يمكننى حصر كل تلك الاكواد
    لذلك افكر فى فلترة الاكواد الخبيثه فحسب

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





    __________________
    راسلني

  7. #7
    عضو فعال
    تاريخ التسجيل
    Feb 2008
    المشاركات
    1,759


    حياك الله و بياك .
    لا تحتاج فلترة الاكواد كاملة فلا يمكنك حصرها لان لكل مبرمج طريقة كتابته للكود و يمكنه ان يلعب على اللفترة .. انما المعول عليه فلترة الدوال فقط مثلا دوال الكوكيز و اي دوال تتعامل مع متصفح الزائر حتى تكسب ثقة الزائر .
    ممتاز
    مارايك فى الكود التالى
    كود PHP:
    <?php
    function RemoveXSS($val) {
       
    // remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed
       // this prevents some character re-spacing such as <java\0script>
       // note that you have to handle splits with \n, \r, and \t later since they *are* allowed in some inputs
       
    $val preg_replace('/([\x00-\x08][\x0b-\x0c][\x0e-\x20])/'''$val);

       
    // straight replacements, the user should never need these since they're normal characters
       // this prevents like <IMG SRC=&#X40&#X61&#X76&#X61&#X73&#X63&#X72&#X69&#X70&#X74&#X3A&#X61&#X6C&#X65&#X72&#X74&#X28&#X27&#X58&#X53&#X53&#X27&#X29>
       
    $search 'abcdefghijklmnopqrstuvwxyz';
       
    $search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
       
    $search .= '1234567890!@#$%^&*()';
       
    $search .= '~`";:?+/={}[]-_|\'\\';
       for (
    $i 0$i strlen($search); $i++) {
          
    // ;? matches the ;, which is optional
          // 0{0,7} matches any padded zeros, which are optional and go up to 8 chars

          // &#x0040 @ search for the hex values
          
    $val preg_replace('/(&#[x|X]0{0,8}'.dechex(ord($search[$i])).';?)/i'$search[$i], $val); // with a ;
          // @ @ 0{0,7} matches '0' zero to seven times
          
    $val preg_replace('/(&#0{0,8}'.ord($search[$i]).';?)/'$search[$i], $val); // with a ;
       
    }

       
    // now the only remaining whitespace attacks are \t, \n, and \r
       
    $ra1 = Array('javascript''vbscript''expression''applet''meta''xml''blink''link''style''script''embed''object''iframe''frame''frameset''ilayer''layer''bgsound''title''base');
       
    $ra2 = Array('onabort''onactivate''onafterprint''onafterupdate''onbeforeactivate''onbeforecopy''onbeforecut''onbeforedeactivate''onbeforeeditfocus''onbeforepaste''onbeforeprint''onbeforeunload''onbeforeupdate''onblur''onbounce''oncellchange''onchange''onclick''oncontextmenu''oncontrolselect''oncopy''oncut''ondataavailable''ondatasetchanged''ondatasetcomplete''ondblclick''ondeactivate''ondrag''ondragend''ondragenter''ondragleave''ondragover''ondragstart''ondrop''onerror''onerrorupdate''onfilterchange''onfinish''onfocus''onfocusin''onfocusout''onhelp''onkeydown''onkeypress''onkeyup''onlayoutcomplete''onload''onlosecapture''onmousedown''onmouseenter''onmouseleave''onmousemove''onmouseout''onmouseover''onmouseup''onmousewheel''onmove''onmoveend''onmovestart''onpaste''onpropertychange''onreadystatechange''onreset''onresize''onresizeend''onresizestart''onrowenter''onrowexit''onrowsdelete''onrowsinserted''onscroll''onselect''onselectionchange''onselectstart''onstart''onstop''onsubmit''onunload');
       
    $ra array_merge($ra1$ra2);

       
    $found true// keep replacing as long as the previous round replaced something
       
    while ($found == true) {
          
    $val_before $val;
          for (
    $i 0$i sizeof($ra); $i++) {
             
    $pattern '/';
             for (
    $j 0$j strlen($ra[$i]); $j++) {
                if (
    $j 0) {
                   
    $pattern .= '(';
                   
    $pattern .= '(&#[x|X]0{0,8}([9][a][b]);?)?';
                   
    $pattern .= '|(&#0{0,8}([9][10][13]);?)?';
                   
    $pattern .= ')?';
                }
                
    $pattern .= $ra[$i][$j];
             }
             
    $pattern .= '/i';
             
    $replacement substr($ra[$i], 02).'<x>'.substr($ra[$i], 2); // add in <> to nerf the tag
             
    $val preg_replace($pattern$replacement$val); // filter out the hex tags
             
    if ($val_before == $val) {
                
    // no replacements were made, so exit the loop
                
    $found false;
             }
          }
       }
    }
    ?>
    حصلت عليه من احد المنتديات
    فى السطر
    كود PHP:
    $ra1 = Array('javascript''vbscript''expression''applet''meta''xml''blink''link''style''script''embed''object''iframe''frame''frameset''ilayer''layer''bgsound''title''base');
       
    $ra2 = Array('onabort''onactivate''onafterprint''onafterupdate''onbeforeactivate''onbeforecopy''onbeforecut''onbeforedeactivate''onbeforeeditfocus''onbeforepaste''onbeforeprint''onbeforeunload''onbeforeupdate''onblur''onbounce''oncellchange''onchange''onclick''oncontextmenu''oncontrolselect''oncopy''oncut''ondataavailable''ondatasetchanged''ondatasetcomplete''ondblclick''ondeactivate''ondrag''ondragend''ondragenter''ondragleave''ondragover''ondragstart''ondrop''onerror''onerrorupdate''onfilterchange''onfinish''onfocus''onfocusin''onfocusout''onhelp''onkeydown''onkeypress''onkeyup''onlayoutcomplete''onload''onlosecapture''onmousedown''onmouseenter''onmouseleave''onmousemove''onmouseout''onmouseover''onmouseup''onmousewheel''onmove''onmoveend''onmovestart''onpaste''onpropertychange''onreadystatechange''onreset''onresize''onresizeend''onresizestart''onrowenter''onrowexit''onrowsdelete''onrowsinserted''onscroll''onselect''onselectionchange''onselectstart''onstart''onstop''onsubmit''onunload');
       
    $ra array_merge($ra1$ra2); 
    قام بحصر اكواد الجافا سكريبت والاحداث الخاصة بها .. ومن ثم فلترتها
    هل يعتبر كافى ياترى؟
    شكرا اخوى وضاء لاهتمامك





    __________________
    FaceBook Application Developer
    تعلم برمجة سكريبت جلب المحتوى خطوة بخطوة
    مشروعى داخل معرض الاتصالات
    لمراسلتي إضغط هنا
    سبحان الله وبحمده سبحان الله العظيم

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


    انا عادة استخدم تلك الدوال لفلترات المدخلات
    كود PHP:
    $shortcut =addslashes(strip_tags(trim($_POST['value']))); 
    وعادة ايضا اقوم بالتاكد ان كنت ساقوم بارسال مثلا ID
    بتأكد بدالة IS_Numreic
    كود PHP:
    if(!is_numeric($id)){
            echo
    "BAD ID";

    }else{
    //My Cosde here !!







    __________________
    FaceBook Application Developer
    تعلم برمجة سكريبت جلب المحتوى خطوة بخطوة
    مشروعى داخل معرض الاتصالات
    لمراسلتي إضغط هنا
    سبحان الله وبحمده سبحان الله العظيم

  9. #9
    عضو فعال
    تاريخ التسجيل
    Feb 2008
    المشاركات
    1,759


    حصلت على هالرابط اثناء بحثى عن ثغرات XSS
    موقع رائع فى كيفية وضع الكود بطرق مختلفة
    http://ha.ckers.org/xss.html

    تنبية
    الموقع لا يحتوى على اى ثغرات .. فقط طريقة وضع الكود والمتصفحات التى تدعم كل كود

    مثال
    كود PHP:
    <IMG SRC="javascript:alert('XSS');"
    Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02]

    بهذه الطريقة فقط





    __________________
    FaceBook Application Developer
    تعلم برمجة سكريبت جلب المحتوى خطوة بخطوة
    مشروعى داخل معرض الاتصالات
    لمراسلتي إضغط هنا
    سبحان الله وبحمده سبحان الله العظيم

  10. #10
    عضو فعال
    تاريخ التسجيل
    Dec 2008
    المشاركات
    1,897


    انا عادة استخدم تلك الدوال لفلترات المدخلات
    كود PHP:
    $shortcut =addslashes(strip_tags(trim($_POST['value']))); 
    وعادة ايضا اقوم بالتاكد ان كنت ساقوم بارسال مثلا ID
    بتأكد بدالة IS_Numreic
    كود PHP:
    if(!is_numeric($id)){
            echo
    "BAD ID";

    }else{
    //My Cosde here !!

    حتى أريحك ، لن تجد شيء يفيدك في اختبار الكود لا خبير و لا مبرمج اكثر من التطبيق العملي ، ادخل على مواقع الثغرات العالمية كموقع ميلوورم الذي تم غلقه و ظهرت عدت بدائل كموقع http://www.exploit-db.com/ و خذ لك عينات من الاكواد الخبية و جربها على صفحاتك الشخصية طبعا بعد ان تنقحها من روابط المواقع الاخرى و البريد الالكتروني و راجع فاعلية الحماية لديك.





    __________________
    راسلني

  11. #11
    ينتظر رسالة التوكيد
    تاريخ التسجيل
    Jul 2011
    المشاركات
    77


    طيب بس تطلع الكود من قاعدة البيانات حط الكود في textarea
    واطبعه، واتوقع هذا يلغي امكانية ال XSS
    حسبما اعلم دالة html_entities تحول طريقة كتابة التاغات بحيث لا يتم تنفيذها

    إذا حبيت تتعامل مع ثغرات sql injection استعمل prepared statements
    أو mysql_real_escape_string


    جرب وشوف






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


    هناك حل , وهو عن طريق البرمجة في موقع مستقل عن الموقع الخاص بك وتضمين الخدمة بواسطة Iframe

    شاهد نظام igoogle

    تحياتي





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

  13. #13
    ينتظر رسالة التوكيد
    تاريخ التسجيل
    Jul 2011
    المشاركات
    77


    هناك حل , وهو عن طريق البرمجة في موقع مستقل عن الموقع الخاص بك وتضمين الخدمة بواسطة Iframe

    شاهد نظام igoogle

    تحياتي

    حل متطرف

    طيب ما هو ممكن يحط الكود ب iframe ويكون الكود مخزن في موقعه كمان

    لكن اعتقد وضعه في مربع نصي يفي بالغرض
    لأنه لا يتم تنفيذه ابدًا انما يؤخذ كنص
    طبعًا ممكن تنسيق المربع النصي كما نشاء بال css






  14. #14
    عضو فعال
    تاريخ التسجيل
    Feb 2008
    المشاركات
    1,759


    طيب بس تطلع الكود من قاعدة البيانات حط الكود في textarea
    واطبعه، واتوقع هذا يلغي امكانية ال XSS
    حسبما اعلم دالة html_entities تحول طريقة كتابة التاغات بحيث لا يتم تنفيذها

    إذا حبيت تتعامل مع ثغرات sql injection استعمل prepared statements
    أو mysql_real_escape_string


    جرب وشوف
    mysql_real_escape_string بتعمل عمل الثلاث دوال بالاعلى
    كود PHP:
       $shortcut =addslashes(strip_tags(trim($_POST['value']))); 

    حتى أريحك ، لن تجد شيء يفيدك في اختبار الكود لا خبير و لا مبرمج اكثر من التطبيق العملي ، ادخل على مواقع الثغرات العالمية كموقع ميلوورم الذي تم غلقه و ظهرت عدت بدائل كموقع http://www.exploit-db.com/ و خذ لك عينات من الاكواد الخبية و جربها على صفحاتك الشخصية طبعا بعد ان تنقحها من روابط المواقع الاخرى و البريد الالكتروني و راجع فاعلية الحماية لديك.
    فكره مناسبة للغاية
    جزاك الله كل خير اخوى وضاء



    هناك حل , وهو عن طريق البرمجة في موقع مستقل عن الموقع الخاص بك وتضمين الخدمة بواسطة Iframe

    شاهد نظام igoogle

    تحياتي
    شكرا ahmadmarafa لاهتمامك ولكن الاخ أحمد العبد الله له رأى اخر
    حل متطرف

    طيب ما هو ممكن يحط الكود ب iframe ويكون الكود مخزن في موقعه كمان

    لكن اعتقد وضعه في مربع نصي يفي بالغرض
    لأنه لا يتم تنفيذه ابدًا انما يؤخذ كنص
    طبعًا ممكن تنسيق المربع النصي كما نشاء بال css
    بالنسبة للمربع النصى
    انا اريد ان اعرض الكود
    كما اشرت مسبقا فى الموضوع
    انه رايح يجيب اكواد ويحطها فى الموقع .. انا قاصد هالشى
    بس ابى احذف منه الاكواد ان وضع اكواد خبيثه
    وشكرا للجميع





    __________________
    FaceBook Application Developer
    تعلم برمجة سكريبت جلب المحتوى خطوة بخطوة
    مشروعى داخل معرض الاتصالات
    لمراسلتي إضغط هنا
    سبحان الله وبحمده سبحان الله العظيم





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

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

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