شرح كيف تحمي موقعك من ثغرة xss

الادارة كريم

مشرف سابق
مجموعة الاعضاء

بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
صباح-مساء الخير على الجميع

في هذا الدرس سنتحدث عن:-

  • ما هي ثغرة XSS
  • انواع ثغرة XSS
  • اضرار الثغرة
  • الحماية من الثغرة
  • تطبيق عملي
ماهي ثغرة XSS:
البرمجة عبر المواقع / هجوم حقن الشيفرة المصدريّة عبر موقع وسيط (بالإنجليزية: (Cross-site scripting (XSS) هي أحد أنواع الهجوم التي يتعرض لها الأنظمة الحاسوبية، ونجدها خصوصاً في تطبيقات الإنترنت عبر ما يسمى برمجة بالحقن، التي يلجأ فيها بعض مستخدمي الإنترنت المخربين لإدخال بعض الجمل البرمجية للصفحات التي يستعرضها الآخرون.
- wikipedia
انواع ثغرة XSS:

  • Reflected
  • stored
  • DOM-based
اضرار الثغرة:
تعتمد ثغرة XSS على استغلال المدخلات التي يتم ادخالها المهاجم وتكون بالغالب مبرمجه بـ لغة Javascript أو html حيث يتمكن المهاجم من سرقة "" لأنتحال شخصيتك في الموقع المستهدف أو تحويلك الى صفحة اخرى مشابهه للموقع المستهدف كـ صفحة مزورة يتمكن من خلالها سرقة حسابات المستخدمين أو تحويل المستخدمين لتحميل برمجيات خبيثه كـ برمجيات تجسسيه او فدية
الحماية من الثغرة:

المتضررين من الغثره هم المستخدم والمبرمج

  • المستخدم
لابد على المستخدم ان يتسخدم اخر اصدار من المتصفح وايضا استخدام اضافه NoScript وعدم الدخول على الروابط القادمه من طرف مجهول
  • المبرمج
لابد على المبرمج التاكد من صحه مدخلاته وخلوها من الاخطاء التي تمكن المهاجم من استغلال ثغره XSS ويقوم بفلتره مدخلاته
تطبيق عملي:






هنا لدي كود بسيط مهمته اخذ قيمة name من المدخلات وطباعتها بالصفحه وهنا سنطبق استغلال الغثره وكيف نحمي المدخلات.




<html> <head><title>0xAbdullah LAB | XSS</title></head> <body> <form action="" method="post"> <input type="text" name="name" value="" /> <input type="submit" name="submit" value="Submit" /> </form> <?php if (isset($_POST['submit'])) { $name= $_POST['name']; echo "Welcome $name"; } ?> </body> <html>


على سبيل المثال ساقوم بأدخال اسمي ومن ثم سيقوم بطباعته كتالي

: Welcome Abdullah
VL8yP70xZ3bTbWSCfGNyg1Sbvfyjy5Ks43Nitips.gif

ولكن ماذا لو قمت ارسال كود html هل سيقوم بطباعته؟ الاجابه نعم بكل تاكيد بسبب أن المدخلات لم يتم فلترتها سياخذ المدخل من قبل المهاجم وطباعته مثل ماتم ارساله!
7upt94FfsB6ulunV3KQqGprLZP88sxBGhpzW7WgN.gif

الان سنقوم بـتجربه كود Javascript مهمته هو تحويلنا الى موقع اخر



كود:
  <script> document.location = 'https://3alam.pro';</script> [IMG]https://s3.eu-west-2.amazonaws.com/uploads.3alampro.com/2018/September/fccx16t19gtr0n7bHP8iYQUpHOHi015MDdRw3C0L.gif[/IMG]


الان نريد ان نقوم بفلترة المدخل لدينا لكي يتم منع استغلال الثغرة وذلك يتم عن طريق استخدام داله بأسم (strip_tags) مهمة الدالة هي حذف اكواد html وطباعه النص

<html> <head><title>0xAbdullah LAB | XSS</title></head> <body> <form action="" method="post"> <input type="text" name="name" value="" /> <input type="submit" name="submit" value="Submit" /> </form> <?php if (isset($_POST['submit'])) { $name= $_POST['name']; echo strip_tags("Welcome $name"); } ?> </body> <html>



قمنا بوضع الدالة قبل عملية الطباعه, ليتم فلترة المدخلات من المتغير "name" ومن ثم طباعتها. الان نعيد اختبار المدخلات لدينا بمثل ما فعلنا سابقاً .
Wl2avTSRRRc5zncLTxK5ceBIQyk0f8XfAjr6gupi.gif

كما نلاحظ تم فتلرة المدخلات وترقيع الثغرة بهذه السهولة
النهاية: اتمنى الشرح كان واضح للجميع وكود أمن للجميع 3> إن أحسنت فمن الله، وإن أسأت أو أخطأت فمن نفسي والشيطان
 

admin

عضو إداري
ادارة المنتدى

مشكور على الافادة العظيمة
 

أعلى