انتقل إلى محتوى الدرس

Stored vs Reflected XSS Attacks الفرق بين ثغرات XSS المخزنة والمنعكسة

اقضِ على ثغرات حقن السكريبتات العابرة للمواقع XSS في PHP 8 باستخدام htmlspecialchars وفحص الروابط ورؤوس الحماية القياسية.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

تحدث ثغرة البرمجة العابرة للمواقع (XSS) عندما يطبع تطبيق الويب بيانات غير موثوقة داخل الصفحة دون ترميز، مما يسمح للمهاجم بتنفيذ كود JavaScript داخل متصفح الضحية.

  • ثغرة XSS المنعكسة (Reflected): تُطبع المدخلات الخبيثة القادمة في الطلب الحالي (مثل $_GET["q"]) مباشرة داخل صفحة الاستجابة.
  • ثغرة XSS المخزنة (Stored): تُحفظ المدخلات الخبيثة في قاعدة البيانات (مثل تعليق أو نبذة شخصية) وتُنفذ في متصفح كل زائر يستعرض الصفحة.
  • القاعدة الذهبية: تحقق من المدخلات عند الاستقبال، وخزّن البيانات الخام في قاعدة البيانات عبر PDO، ورمّز المخرجات لحظة الطباعة في القالب.

بدلاً من تفسير <script> كوسم برمجي قابل للتنفيذ، يعرضه المتصفح كنص عادي غير ضار على الشاشة.

مخطط توضيحي: محاكي ترميز المخرجات والوقاية من ثغرات XSS في PHP
PHP
<?php
$searchQuery = '<script>alert("XSS")</script>';

// VULNERABLE: Echoing raw input directly into HTML
// echo "Results for: " . $searchQuery;

// SECURE: Escaping special HTML characters on output
$safeQuery = htmlspecialchars($searchQuery, ENT_QUOTES, 'UTF-8');
echo "Results for: " . $safeQuery . "\n";