إصلاح ثغرة XSS في PHP باستخدام htmlspecialchars

x32x01
  • بواسطة x32x01 ||
  • #1
ثغرة XSS (Cross Site Scripting) تعتبر من أخطر وأشهر الثغرات الموجودة في تطبيقات الويب 🌐
والسبب الرئيسي لظهورها غالبًا هو إن الموقع يعرض مدخلات المستخدم بدون فلترة أو حماية.

يعني ببساطة:
لو المستخدم قدر يكتب كود JavaScript ويتنفذ داخل صفحة الموقع… يبقى عندك ثغرة XSS ⚠️

في البوست ده هنفهم:
  • يعني إيه ثغرة XSS
  • إزاي الهاكر يستغلها
  • وإزاي نصلحها في PHP باستخدام دالة htmlspecialchars
وكل ده بطريقة سهلة مع أمثلة كود حقيقية 👨‍💻

ما هي ثغرة XSS ولماذا تعتبر خطيرة؟​

ثغرة Cross Site Scripting (XSS) بتحصل لما الموقع يسمح للمستخدم إنه يضيف كود يتم تنفيذه داخل المتصفح.
المهاجم ممكن يستغل الثغرة دي في حاجات خطيرة جدًا مثل:
💀 سرقة Cookies الخاصة بالمستخدم
💀 سرقة Sessions وتسجيل الدخول بدل الضحية
💀 تنفيذ أكواد JavaScript خبيثة
💀 إعادة توجيه المستخدم لمواقع مزيفة​
وعشان كده ثغرة XSS موجودة دائمًا ضمن قائمة OWASP Top 10 لأخطر ثغرات الويب.



مثال على كود PHP يحتوي على ثغرة XSS​

خلينا نشوف مثال بسيط على كود PHP Vulnerable 👇
PHP:
<?php echo "Welcome " . $_GET["name"]; ?>
المشكلة هنا إن الكود بيعمل حاجتين:
1️⃣ يستقبل بيانات من المستخدم
2️⃣ يعرضها مباشرة داخل الصفحة​
بدون أي فلترة أو حماية ❌

يعني لو المستخدم دخل الرابط التالي:
HTML:
https://target.com?name=Ahmed<script>alert(document.domain)</script>
هيتم تنفيذ كود JavaScript داخل الصفحة مباشرة.

والنتيجة؟
المتصفح هيشغل الأمر: alert(document.domain)
وده دليل إن الموقع مصاب بثغرة XSS.



كيف يستغل الهاكر هذه الثغرة؟​

المهاجم غالبًا بيعمل لينك خبيث ويرسله للضحية.
مثال:
HTML:
https://target.com?name=<script>stealCookies()</script>
لو المستخدم فتح الرابط، الكود هيتنفذ داخل المتصفح بدون ما يحس 😨

وساعتها ممكن يحصل:
🔓 سرقة الكوكيز
🔓 سرقة الجلسة Session
🔓 تنفيذ عمليات باسم المستخدم​



الحل: استخدام دالة htmlspecialchars في PHP​

لحسن الحظ، حل المشكلة بسيط جدًا.
PHP بتوفر دالة اسمها htmlspecialchars وظيفتها تحويل الأحرف الخطيرة إلى نص عادي.
الأحرف اللي بتحولها الدالة مثل: < > " ' &
بدل ما تتحول إلى كود HTML أو JavaScript… تتحول إلى نص آمن.



مثال على الكود الآمن​

خلينا نشوف نفس الكود بعد إصلاح الثغرة 👇
PHP:
<?php echo htmlspecialchars($_GET['name']); ?>
اللي حصل هنا إننا عملنا:
1️⃣ استقبال البيانات
2️⃣ تمريرها لدالة htmlspecialchars
3️⃣ بعد كده يتم عرضها​



ماذا يحدث بعد استخدام htmlspecialchars؟​

لو المستخدم حاول نفس الهجوم:
HTML:
https://target.com?name=Ahmed<script>alert(document.domain)</script>
بدل تنفيذ الكود… الصفحة هتعرضه كنص عادي.
يعني هيظهر كده:
HTML:
Ahmed<script>alert(document.domain)</script>
بدون تنفيذ JavaScript 🚫
وده معناه إن الثغرة تم إصلاحها بنجاح.



مثال عملي يوضح الفرق​

كود مصاب​

PHP:
<?php echo $_GET['name']; ?>
النتيجة:
❌ تنفيذ كود JavaScript



كود آمن​

PHP:
<?php echo htmlspecialchars($_GET['name']); ?>
النتيجة:
✅ عرض النص فقط بدون تنفيذ الكود



أفضل ممارسات الحماية من XSS​

عشان تحمي موقعك من Cross Site Scripting اتبع النصائح دي:
🛡️ فلترة كل مدخلات المستخدم
🛡️ استخدم htmlspecialchars() عند عرض البيانات
🛡️ استخدم Content Security Policy (CSP)
🛡️ لا تثق في أي بيانات تأتي من المستخدم
🛡️ تحقق من المدخلات دائمًا​
الأمن في البرمجة بيبدأ من عدم الثقة في المدخلات.



فيديو شرح عملي​

لو حابب تشوف شرح عملي لثغرة XSS وطريقة إصلاحها:
Video thumbnail
👆 أضغط على الصورة لمشاهدة الفيديو 👆



خلاصة البوست ده​

ثغرة XSS من أكثر الثغرات انتشارًا في تطبيقات الويب.
وغالبًا سببها الرئيسي هو عرض مدخلات المستخدم بدون فلترة.

لكن باستخدام دالة بسيطة زي: htmlspecialchars()
تقدر تمنع تنفيذ الأكواد الخبيثة وتحمي موقعك من الهجمات.
لو بتطور مواقع باستخدام PHP لازم تعتبر حماية المدخلات خطوة أساسية في كل مشروع.
 
التعديل الأخير:

المواضيع ذات الصلة

x32x01
الردود
1
المشاهدات
296
Abo Ali
A
x32x01
الردود
6
المشاهدات
1K
x32x01
x32x01
x32x01
الردود
0
المشاهدات
2K
x32x01
x32x01
x32x01
الردود
0
المشاهدات
787
x32x01
x32x01
x32x01
الردود
0
المشاهدات
994
x32x01
x32x01
الوسوم : الوسوم
cookies سرقة cross site scripting htmlspecialchars javascript injection owasp top 10 session hijacking web security أمن تطبيقات الويب ثغرات xss حماية مواقع php
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟

آخر المشاركات

إحصائيات المنتدى
المواضيع
2,388
المشاركات
2,601
أعضاء أكتب كود
574
أخر عضو
الياس
عودة
أعلى