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




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

الرد على الموضوع
 
LinkBack أدوات الموضوع
عضو نشيط
#1  
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 سيئة
DSQ8.com is offline   قديم 18-11-2008, 05:13 AM
الرد مع إقتباس
عضو فعال جدا
#2  

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






__________________
تحاور مع العاقل بعقل .. اما ان يقتنع او تقتنع
وتحاور مع الجاهل بعقل .. اما يطقعش او تفرقش
وتلك الفاظ لا معنى لها كذلك كلماته
سحاب اون لاين is offline   قديم 18-11-2008, 02:28 PM
الرد مع إقتباس
عضو جديد
#3  

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






عبد العزيز المغربي is offline   قديم 18-11-2008, 05:01 PM
الرد مع إقتباس
عضو نشيط
#4  

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

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

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

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






__________________
مملكة الموت
=======================
100(سبحان الله وبحمده ،،، سبحان الله العظيم) = 0 سيئة
DSQ8.com is offline   قديم 18-11-2008, 05:32 PM
الرد مع إقتباس
عضو نشيط
#5  

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

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






حياة ديزاين is offline   قديم 18-11-2008, 09:28 PM
الرد مع إقتباس
عضو سوبر نشيط
#6  

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

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






__________________
أهلا و سهلا بكم في :-
موقع دار الأوائل
تفضل معنا خدمات الاستضافة
موقع العبقري لخدمات الاستضافة
عبقري العرب is offline   قديم 20-11-2008, 12:22 AM
الرد مع إقتباس
عضو نشيط
#7  

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

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

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

إقتباس:
ما شاء الله .. ابداع اخوي DSQ8.com

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

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






__________________
مملكة الموت
=======================
100(سبحان الله وبحمده ،،، سبحان الله العظيم) = 0 سيئة
DSQ8.com is offline   قديم 20-11-2008, 04:27 AM
الرد مع إقتباس
عضو نشيط
#8  

اعزائي

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

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

السطر 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 سيئة
DSQ8.com is offline   قديم 20-11-2008, 06:44 AM
الرد مع إقتباس
عضو مميز
#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
ولكني تهت كثير الصراحة

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






__________________
السيف أصدق أنباء من الكتب
محب الله ورسوله is offline   قديم 21-11-2008, 07:07 AM
الرد مع إقتباس
عضو نشيط
#10  

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

بالتوفيق






__________________
مملكة الموت
=======================
100(سبحان الله وبحمده ،،، سبحان الله العظيم) = 0 سيئة
DSQ8.com is offline   قديم 24-11-2008, 07:44 AM
الرد مع إقتباس
عضو نشيط
#11  

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

السطر 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 سيئة
DSQ8.com is offline   قديم 24-11-2008, 08:15 AM
الرد مع إقتباس
عضو مميز
#12  

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






__________________
السيف أصدق أنباء من الكتب
محب الله ورسوله is offline   قديم 25-11-2008, 10:13 PM
الرد مع إقتباس
عضو نشيط
#13  

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

بالتوفيق






__________________
مملكة الموت
=======================
100(سبحان الله وبحمده ،،، سبحان الله العظيم) = 0 سيئة
DSQ8.com is offline   قديم 26-11-2008, 08:51 AM
الرد مع إقتباس
عضو سوبر نشيط
#14  

اشكرك بعنف

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

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

بالانتضار






Jo Live is offline   قديم 26-11-2008, 04:17 PM
الرد مع إقتباس
عضو نشيط
#15  

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

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

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






__________________
مملكة الموت
=======================
100(سبحان الله وبحمده ،،، سبحان الله العظيم) = 0 سيئة
DSQ8.com is offline   قديم 27-11-2008, 08:48 AM
الرد مع إقتباس
عضو نشيط
#16  

واضح انه متقدم جداً ما شاء الله
لى عوده بعد النظر فى الكود إن شاء الله
تحيتى لك >> عاشق الصداقه






عاشق الصداقه is offline   قديم 29-11-2008, 01:40 PM
الرد مع إقتباس
عضو فعال
#17  

ماشاء الله
واضح انه ممتاز
لكن هل قمت بتجربته في سكربت وتجرب الانجيكشن وال xss وكل ثغره على حدا وتأكدت من انه فعال
بارك الله فيك






__________________
Ramy
Remano is offline   قديم 29-11-2008, 08:44 PM
الرد مع إقتباس
عضو نشيط
#18  

إقتباس:
واضح انه متقدم جداً ما شاء الله
لى عوده بعد النظر فى الكود إن شاء الله
تحيتى لك >> عاشق الصداقه
انتظر عودتك وتعليقك عزيزي

إقتباس:
ماشاء الله
واضح انه ممتاز
لكن هل قمت بتجربته في سكربت وتجرب الانجيكشن وال xss وكل ثغره على حدا وتأكدت من انه فعال
بارك الله فيك
نعم عزيزي ونجح.. واتمنى من الجميع ايضا تجربته والابلاغ ان كان غير كافي ليتم التطوير

بالتوفيق






__________________
مملكة الموت
=======================
100(سبحان الله وبحمده ،،، سبحان الله العظيم) = 0 سيئة
DSQ8.com is offline   قديم 30-11-2008, 03:16 AM
الرد مع إقتباس
عضو نشيط جدا
#19  

اتمنى دائما تضع اخر رابط في الموضوع فوق حتى لا نتوه وسط الردود ليا عوده
كلاس قويه فعلا






__________________
يتم قبول الان استقبال اي طلبات برمجه على اي نوع من المنصات الاتيه للجوال
اندرويد - بلاك بيري - ايفون - ويندوز فون 7
ارجوا ارسال رساله خاصه على المنتدى
artint.net is offline   قديم 05-12-2008, 01:03 AM
الرد مع إقتباس
عضو نشيط جدا
#20  

هل من الممكن
ان ارسل للكلاس
$_post
$_get
وهي تتصرف معاهم ؟






__________________
يتم قبول الان استقبال اي طلبات برمجه على اي نوع من المنصات الاتيه للجوال
اندرويد - بلاك بيري - ايفون - ويندوز فون 7
ارجوا ارسال رساله خاصه على المنتدى
artint.net is offline   قديم 09-12-2008, 06:16 PM
الرد مع إقتباس
عضو نشيط جدا
#21  

الغالي :

كان بودي احمله كاهتمام شخصي لاني سويت شيء مقارب لكذا ( الحماية من ال CSRF ) لبحث في الجامعه وناقشته وانتهيت.
كنت ابغى احاول اشوفه على السريع وافيدك لو قدرت ، ولكن للاسف ماقدرت لان الرابط في الرابيد شير يعطي خطا .

علي حمد ،






Ali Hamad is offline   قديم 11-12-2008, 08:21 AM
الرد مع إقتباس
عضو سوبر نشيط
#22  

ErroR






__________________
ومن اعجب الاشياء انك لاتدري وانك لاتدري بانك لاتدري
فإن كنت لاتدري ولم تكُ بالذي يسال من يدري فكيف اذن تدري
تمام العمى طول السكوت وانما شفاء العمى يوماً سؤالك من يدري
s6ur is offline   قديم 17-12-2008, 07:49 AM
الرد مع إقتباس
عضو نشيط جدا
#23  

اللي يبي الكلاس






sms is offline   قديم 17-12-2008, 12:29 PM
الرد مع إقتباس
عضو نشيط
#24  

إقتباس:
هل من الممكن
ان ارسل للكلاس
$_post
$_get
وهي تتصرف معاهم ؟
يرجى مراجعة http://www.arabteam2000-forum.com/in...dpost&p=912378

اخر اصدار من الكلاس تجدونه في المرفقات


بالتوفيق






الملفات المرفقة
نوع الملف: zip dsSafer_0.0.7.zip‏ (6.3 كيلوبايت, 187 مشاهدة)
__________________
مملكة الموت
=======================
100(سبحان الله وبحمده ،،، سبحان الله العظيم) = 0 سيئة
DSQ8.com is offline   قديم 19-12-2008, 04:18 AM
الرد مع إقتباس
عضو فعال
#25  

بارك الله فيك و الله






__________________
كن حكيم في استخدام عقلك
محمد كيوان is offline   قديم 13-01-2009, 11:15 PM
الرد مع إقتباس
الرد على الموضوع



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

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

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


المواضيع المشابهه
الموضوع كاتب الموضوع القسم الردود آخر مشاركة
ثغرات injection وقواعد البيانات وجلسات السيشن Losha.Net PHP 20 22-07-2008 05:31 PM
طريقك للحماية من SQL Injection MPHP PHP 8 13-03-2008 09:52 PM
function يخلصك من ثغرات XSS . jadweb.com PHP 20 17-10-2007 11:03 AM
خبراتكم مطلوبه في SQL injection المهمة9 PHP 5 24-04-2006 11:54 PM


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