سوالف اندرويد




العودة   سوالف سوفت > سوالف برمجة المواقع وتطويرها > PHP
التسجيل المدوّنات البحث مشاركات اليوم جعل الأقسام مقروءة

الرد على الموضوع
 
LinkBack أدوات الموضوع
عضو فعال
#1  
[دعو للنقاش] ماذا لو اردت ان تخزن اكواد 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

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






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

آخر تعديل بواسطة edafa.info في 28-09-2011 الساعة 08:03 AM.
edafa.info is offline   قديم 28-09-2011, 08:01 AM
الرد مع إقتباس
عضو نشيط جدا
#2  

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

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

خالص ودي






__________________
إصبر على كيد الحسود فإن صبرك قاتله ...
أرسل خريطة موقعك لمحركات البحث
ahmadmarafa is offline   قديم 28-09-2011, 12:43 PM
الرد مع إقتباس
عضو فعال
#3  

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

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

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






__________________
FaceBook Application Developer
تعلم برمجة سكريبت جلب المحتوى خطوة بخطوة
مشروعى داخل معرض الاتصالات
لمراسلتي إضغط هنا
سبحان الله وبحمده سبحان الله العظيم
edafa.info is offline   قديم 01-10-2011, 10:03 AM
الرد مع إقتباس
ليسامحني كل من اخطأت بحقه
#4  

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






وضاء is offline   قديم 01-10-2011, 10:04 AM
الرد مع إقتباس
عضو فعال
#5  

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

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

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






__________________
FaceBook Application Developer
تعلم برمجة سكريبت جلب المحتوى خطوة بخطوة
مشروعى داخل معرض الاتصالات
لمراسلتي إضغط هنا
سبحان الله وبحمده سبحان الله العظيم
edafa.info is offline   قديم 01-10-2011, 10:18 AM
الرد مع إقتباس
ليسامحني كل من اخطأت بحقه
#6  

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

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

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






وضاء is offline   قديم 01-10-2011, 11:06 AM
الرد مع إقتباس
عضو فعال
#7  

إقتباس:
المشاركة الأصلية بواسطة وضاء مشاهدة مشاركة
حياك الله و بياك .
لا تحتاج فلترة الاكواد كاملة فلا يمكنك حصرها لان لكل مبرمج طريقة كتابته للكود و يمكنه ان يلعب على اللفترة .. انما المعول عليه فلترة الدوال فقط مثلا دوال الكوكيز و اي دوال تتعامل مع متصفح الزائر حتى تكسب ثقة الزائر .
ممتاز
مارايك فى الكود التالى
كود 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
تعلم برمجة سكريبت جلب المحتوى خطوة بخطوة
مشروعى داخل معرض الاتصالات
لمراسلتي إضغط هنا
سبحان الله وبحمده سبحان الله العظيم
edafa.info is offline   قديم 01-10-2011, 11:31 AM
الرد مع إقتباس
عضو فعال
#8  

انا عادة استخدم تلك الدوال لفلترات المدخلات
كود 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
تعلم برمجة سكريبت جلب المحتوى خطوة بخطوة
مشروعى داخل معرض الاتصالات
لمراسلتي إضغط هنا
سبحان الله وبحمده سبحان الله العظيم
edafa.info is offline   قديم 01-10-2011, 11:35 AM
الرد مع إقتباس
عضو فعال
#9  

حصلت على هالرابط اثناء بحثى عن ثغرات 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
تعلم برمجة سكريبت جلب المحتوى خطوة بخطوة
مشروعى داخل معرض الاتصالات
لمراسلتي إضغط هنا
سبحان الله وبحمده سبحان الله العظيم
edafa.info is offline   قديم 01-10-2011, 11:48 AM
الرد مع إقتباس
ليسامحني كل من اخطأت بحقه
#10  

إقتباس:
المشاركة الأصلية بواسطة edafa.info مشاهدة مشاركة
انا عادة استخدم تلك الدوال لفلترات المدخلات
كود 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/ و خذ لك عينات من الاكواد الخبية و جربها على صفحاتك الشخصية طبعا بعد ان تنقحها من روابط المواقع الاخرى و البريد الالكتروني و راجع فاعلية الحماية لديك.






وضاء is offline   قديم 01-10-2011, 11:48 AM
الرد مع إقتباس
عضو نشيط
#11  

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

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


جرب وشوف






أحمد العبد الله is offline   قديم 01-10-2011, 01:29 PM
الرد مع إقتباس
عضو نشيط جدا
#12  

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

شاهد نظام igoogle

تحياتي






__________________
إصبر على كيد الحسود فإن صبرك قاتله ...
أرسل خريطة موقعك لمحركات البحث
ahmadmarafa is offline   قديم 01-10-2011, 04:15 PM
الرد مع إقتباس
عضو نشيط
#13  

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

شاهد نظام igoogle

تحياتي

حل متطرف

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

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






أحمد العبد الله is offline   قديم 01-10-2011, 05:45 PM
الرد مع إقتباس
عضو فعال
#14  

إقتباس:
المشاركة الأصلية بواسطة أحمد العبد الله مشاهدة مشاركة
طيب بس تطلع الكود من قاعدة البيانات حط الكود في 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/ و خذ لك عينات من الاكواد الخبية و جربها على صفحاتك الشخصية طبعا بعد ان تنقحها من روابط المواقع الاخرى و البريد الالكتروني و راجع فاعلية الحماية لديك.
فكره مناسبة للغاية
جزاك الله كل خير اخوى وضاء



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

شاهد نظام igoogle

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

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

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






__________________
FaceBook Application Developer
تعلم برمجة سكريبت جلب المحتوى خطوة بخطوة
مشروعى داخل معرض الاتصالات
لمراسلتي إضغط هنا
سبحان الله وبحمده سبحان الله العظيم
edafa.info is offline   قديم 02-10-2011, 01:42 AM
الرد مع إقتباس
الرد على الموضوع



أدوات الموضوع

قوانين المشاركات
لا يمكنك كتابة مواضيع جديدة
لا يمكنك إضافة ردود
لا يمكنك إرسال مرفقات
لا يمكنك تعديل مشاركاتك

كود vB متاح
كود [IMG] متاح
كود HTML غير متاح
Trackbacks are متاح
Pingbacks are متاح
Refbacks are متاح


المواضيع المشابهه
الموضوع كاتب الموضوع القسم الردود آخر مشاركة
كاش لمخرجات قاعدة البيانات ، هل من علة فيه ؟ (دعوة للنقاش) خالد الحضري PHP 19 12-03-2011 04:40 PM
اريد دالة تخزن ملف PDF في قاعدة البيانات aladawi PHP 12 10-01-2007 05:21 AM
يرجا افادتنا بافضل اكواد الاستعلام من قاعدة البيانات والاتصال (ضروري - ادخل للتفاصيل) elkaser PHP 5 15-11-2006 12:01 PM
مشكلة في قاعدة البيانات أم ماذا uae505 الإصلاح والصيانة 4 11-06-2004 09:11 PM
اذا عرفت كلمة السر لقاعدة البيانات واسم قاعدة البيانات ماذا يمكن ان يفعل ؟ beshoo الويب والويب 2.0 والـ Semantic Web 22 11-08-2002 12:34 PM


جميع الأوقات بتوقيت غرينتش +3. الوقت الآن هو 10:07 PM.