[كلاس] dsSafer للحماية من ثغرات ال XSS, SQL Injection, Local File Include
السلام عليكــم ورحمـة الله وبركاتــه
بســم الله الـرحمــن الرحيــم
اخواني الأعزاء..
كلاس الـ dsSafer هو صنف للحمايه من اخطار
XSS
SQL INJECTION
LOCAL FILE INCLUDE
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
فائدتها انها تقوم بتأكد من ان المستخدم لم يقم بمحاولة تغيير مسار المجلد او الملف المراد استدعائه..
طريقة الاستخدام
الداله 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()
// بدئ عملية الفلترة للمدخلات $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;
انا عندي مشكلة في ال XSS لكن كما قال سحاب اون لاين ان هذا الكلاس متطور جدا, و للاسف انا مبتدئ في ال php حملت سكريبت لإدارة عيادة طبية, لكن للاسف فيه ثغرة XSS و هذا رابط كود الثغرة Nopaste - XSS Fail و هذا الكود الذي وضعته لسد الثغرة Nopaste - Fail XSS وهل هذا الكود كافي لسد الثغرة, و سؤال اخير هل اي شخص يستطيع استغلال هذا النوع من الثغرات ام مصمم السكريبت فقط و جزاكم الله خيرا
اتمنى دائما تضع اخر رابط في الموضوع فوق حتى لا نتوه وسط الردود ليا عوده
كلاس قويه فعلا
__________________
يتم قبول الان استقبال اي طلبات برمجه على اي نوع من المنصات الاتيه للجوال
اندرويد - بلاك بيري - ايفون - ويندوز فون 7
ارجوا ارسال رساله خاصه على المنتدى
هل من الممكن
ان ارسل للكلاس
$_post
$_get
وهي تتصرف معاهم ؟
__________________
يتم قبول الان استقبال اي طلبات برمجه على اي نوع من المنصات الاتيه للجوال
اندرويد - بلاك بيري - ايفون - ويندوز فون 7
ارجوا ارسال رساله خاصه على المنتدى
كان بودي احمله كاهتمام شخصي لاني سويت شيء مقارب لكذا ( الحماية من ال CSRF ) لبحث في الجامعه وناقشته وانتهيت.
كنت ابغى احاول اشوفه على السريع وافيدك لو قدرت ، ولكن للاسف ماقدرت لان الرابط في الرابيد شير يعطي خطا .
__________________
ومن اعجب الاشياء انك لاتدري وانك لاتدري بانك لاتدري فإن كنت لاتدري ولم تكُ بالذي يسال من يدري فكيف اذن تدري
تمام العمى طول السكوت وانما شفاء العمى يوماً سؤالك من يدري