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

شرح بسيط لطريقه حماية مدخلاتك من استغلالها بثغرة XSS

Abdullah AlZahraniمنذ 6 سنوات

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

صباح-مساء الخير على الجميع

 

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

  • ما هي ثغرة 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

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

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

<script> document.location = 'https://3alam.pro/index.php';</script>

 

الان نريد ان نقوم بفلترة المدخل لدينا لكي يتم منع استغلال الثغرة وذلك يتم عن طريق استخدام داله بأسم (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" ومن ثم طباعتها. الان نعيد اختبار المدخلات لدينا بمثل ما فعلنا سابقاً .

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

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

كلمات دليلية: php security
20
إعجاب
13653
مشاهدات
0
مشاركة
6
متابع
متميز
محتوى رهيب

التعليقات (1)

fahad:

شكرا لك

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !