شرح صفوف ومحتوى الفقرة
تحدث ثغرة البرمجة العابرة للمواقع (XSS) عندما يطبع تطبيق الويب بيانات غير موثوقة داخل الصفحة دون ترميز، مما يسمح للمهاجم بتنفيذ كود JavaScript داخل متصفح الضحية.
- ثغرة XSS المنعكسة (Reflected): تُطبع المدخلات الخبيثة القادمة في الطلب الحالي (مثل
$_GET["q"]) مباشرة داخل صفحة الاستجابة. - ثغرة XSS المخزنة (Stored): تُحفظ المدخلات الخبيثة في قاعدة البيانات (مثل تعليق أو نبذة شخصية) وتُنفذ في متصفح كل زائر يستعرض الصفحة.
- القاعدة الذهبية: تحقق من المدخلات عند الاستقبال، وخزّن البيانات الخام في قاعدة البيانات عبر PDO، ورمّز المخرجات لحظة الطباعة في القالب.
بدلاً من تفسير <script> كوسم برمجي قابل للتنفيذ، يعرضه المتصفح كنص عادي غير ضار على الشاشة.
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";