- بواسطة x32x01 ||
ثغرة XSS (Cross Site Scripting) تعتبر من أخطر وأشهر الثغرات الموجودة في تطبيقات الويب 🌐
والسبب الرئيسي لظهورها غالبًا هو إن الموقع يعرض مدخلات المستخدم بدون فلترة أو حماية.
يعني ببساطة:
لو المستخدم قدر يكتب كود JavaScript ويتنفذ داخل صفحة الموقع… يبقى عندك ثغرة XSS ⚠️
في البوست ده هنفهم:
المهاجم ممكن يستغل الثغرة دي في حاجات خطيرة جدًا مثل:
المشكلة هنا إن الكود بيعمل حاجتين:
يعني لو المستخدم دخل الرابط التالي:
هيتم تنفيذ كود JavaScript داخل الصفحة مباشرة.
والنتيجة؟
المتصفح هيشغل الأمر:
وده دليل إن الموقع مصاب بثغرة XSS.
مثال:
لو المستخدم فتح الرابط، الكود هيتنفذ داخل المتصفح بدون ما يحس 😨
وساعتها ممكن يحصل:
PHP بتوفر دالة اسمها htmlspecialchars وظيفتها تحويل الأحرف الخطيرة إلى نص عادي.
الأحرف اللي بتحولها الدالة مثل:
بدل ما تتحول إلى كود HTML أو JavaScript… تتحول إلى نص آمن.
اللي حصل هنا إننا عملنا:
بدل تنفيذ الكود… الصفحة هتعرضه كنص عادي.
يعني هيظهر كده:
بدون تنفيذ JavaScript 🚫
وده معناه إن الثغرة تم إصلاحها بنجاح.
النتيجة:
❌ تنفيذ كود JavaScript
النتيجة:
✅ عرض النص فقط بدون تنفيذ الكود
وغالبًا سببها الرئيسي هو عرض مدخلات المستخدم بدون فلترة.
لكن باستخدام دالة بسيطة زي:
تقدر تمنع تنفيذ الأكواد الخبيثة وتحمي موقعك من الهجمات.
لو بتطور مواقع باستخدام PHP لازم تعتبر حماية المدخلات خطوة أساسية في كل مشروع.
والسبب الرئيسي لظهورها غالبًا هو إن الموقع يعرض مدخلات المستخدم بدون فلترة أو حماية.
يعني ببساطة:
لو المستخدم قدر يكتب كود JavaScript ويتنفذ داخل صفحة الموقع… يبقى عندك ثغرة XSS ⚠️
في البوست ده هنفهم:
- يعني إيه ثغرة XSS
- إزاي الهاكر يستغلها
- وإزاي نصلحها في PHP باستخدام دالة htmlspecialchars
ما هي ثغرة XSS ولماذا تعتبر خطيرة؟
ثغرة Cross Site Scripting (XSS) بتحصل لما الموقع يسمح للمستخدم إنه يضيف كود يتم تنفيذه داخل المتصفح.المهاجم ممكن يستغل الثغرة دي في حاجات خطيرة جدًا مثل:
💀 سرقة Cookies الخاصة بالمستخدم
💀 سرقة Sessions وتسجيل الدخول بدل الضحية
💀 تنفيذ أكواد JavaScript خبيثة
💀 إعادة توجيه المستخدم لمواقع مزيفة
وعشان كده ثغرة XSS موجودة دائمًا ضمن قائمة OWASP Top 10 لأخطر ثغرات الويب.💀 سرقة Sessions وتسجيل الدخول بدل الضحية
💀 تنفيذ أكواد JavaScript خبيثة
💀 إعادة توجيه المستخدم لمواقع مزيفة
مثال على كود PHP يحتوي على ثغرة XSS
خلينا نشوف مثال بسيط على كود PHP Vulnerable 👇 PHP:
<?php echo "Welcome " . $_GET["name"]; ?> 1️⃣ يستقبل بيانات من المستخدم
2️⃣ يعرضها مباشرة داخل الصفحة
بدون أي فلترة أو حماية ❌2️⃣ يعرضها مباشرة داخل الصفحة
يعني لو المستخدم دخل الرابط التالي:
HTML:
https://target.com?name=Ahmed<script>alert(document.domain)</script> والنتيجة؟
المتصفح هيشغل الأمر:
alert(document.domain)وده دليل إن الموقع مصاب بثغرة XSS.
كيف يستغل الهاكر هذه الثغرة؟
المهاجم غالبًا بيعمل لينك خبيث ويرسله للضحية.مثال:
HTML:
https://target.com?name=<script>stealCookies()</script> وساعتها ممكن يحصل:
🔓 سرقة الكوكيز
🔓 سرقة الجلسة Session
🔓 تنفيذ عمليات باسم المستخدم
🔓 سرقة الجلسة Session
🔓 تنفيذ عمليات باسم المستخدم
الحل: استخدام دالة htmlspecialchars في PHP
لحسن الحظ، حل المشكلة بسيط جدًا.PHP بتوفر دالة اسمها htmlspecialchars وظيفتها تحويل الأحرف الخطيرة إلى نص عادي.
الأحرف اللي بتحولها الدالة مثل:
< > " ' &بدل ما تتحول إلى كود HTML أو JavaScript… تتحول إلى نص آمن.
مثال على الكود الآمن
خلينا نشوف نفس الكود بعد إصلاح الثغرة 👇 PHP:
<?php echo htmlspecialchars($_GET['name']); ?> 1️⃣ استقبال البيانات
2️⃣ تمريرها لدالة htmlspecialchars
3️⃣ بعد كده يتم عرضها
2️⃣ تمريرها لدالة htmlspecialchars
3️⃣ بعد كده يتم عرضها
ماذا يحدث بعد استخدام htmlspecialchars؟
لو المستخدم حاول نفس الهجوم: HTML:
https://target.com?name=Ahmed<script>alert(document.domain)</script> يعني هيظهر كده:
HTML:
Ahmed<script>alert(document.domain)</script> وده معناه إن الثغرة تم إصلاحها بنجاح.
مثال عملي يوضح الفرق
كود مصاب
PHP:
<?php echo $_GET['name']; ?> ❌ تنفيذ كود JavaScript
كود آمن
PHP:
<?php echo htmlspecialchars($_GET['name']); ?> ✅ عرض النص فقط بدون تنفيذ الكود
أفضل ممارسات الحماية من XSS
عشان تحمي موقعك من Cross Site Scripting اتبع النصائح دي:🛡️ فلترة كل مدخلات المستخدم
🛡️ استخدم htmlspecialchars() عند عرض البيانات
🛡️ استخدم Content Security Policy (CSP)
🛡️ لا تثق في أي بيانات تأتي من المستخدم
🛡️ تحقق من المدخلات دائمًا
الأمن في البرمجة بيبدأ من عدم الثقة في المدخلات.🛡️ استخدم htmlspecialchars() عند عرض البيانات
🛡️ استخدم Content Security Policy (CSP)
🛡️ لا تثق في أي بيانات تأتي من المستخدم
🛡️ تحقق من المدخلات دائمًا
فيديو شرح عملي
لو حابب تشوف شرح عملي لثغرة XSS وطريقة إصلاحها:
👆 أضغط على الصورة لمشاهدة الفيديو 👆
خلاصة البوست ده
ثغرة XSS من أكثر الثغرات انتشارًا في تطبيقات الويب.وغالبًا سببها الرئيسي هو عرض مدخلات المستخدم بدون فلترة.
لكن باستخدام دالة بسيطة زي:
htmlspecialchars()تقدر تمنع تنفيذ الأكواد الخبيثة وتحمي موقعك من الهجمات.
لو بتطور مواقع باستخدام PHP لازم تعتبر حماية المدخلات خطوة أساسية في كل مشروع.
التعديل الأخير: