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

Input Validation vs Output Escaping Table مقارنة التحقق من المدخلات وترميز المخرجات

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

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

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

يُعد التحقق من المدخلات وترميز المخرجات خطي دفاع متكاملين يعملان في نقطتين مختلفتين من دورة حياة الطلب.

  • تحقق من المدخلات فور وصول الطلب لفرض قواعد العمل والأنواع والأطوال والتنسيقات المسموحة.
  • استخدم استعلامات PDO المحضرة عند حفظ البيانات في قاعدة البيانات لمنع حقن SQL.
  • رمّز المخرجات بحسب السياق الدقيق (نص HTML أو خاصية أو رابط أو JSON) لحظة العرض في القالب.

تتحقق filter_var() من كون العمر عدداً صحيحاً ضمن النطاق عند الإدخال، بينما ترمّز htmlspecialchars() الاسم عند الطباعة في HTML.

مرحلة الحمايةالأداة الأساسية في PHPالتهديد المستهدف
Input Validationfilter_var() / preg_match()Malformed data & type errors
Database LayerPDO prepare() + execute()SQL Injection (SQLi)
HTML Body & Quoted Attrhtmlspecialchars(..., ENT_QUOTES)Reflected & Stored XSS
Inline JS Datajson_encode(..., JSON_HEX_TAG)Script breakout XSS
Link href / src URLsparse_url() scheme whitelistjavascript: URI execution

PHP
<?php
$rawAge = "25";
$rawName = 'Ali <Admin>';

$age = filter_var($rawAge, FILTER_VALIDATE_INT, [
    'options' => ['min_range' => 13, 'max_range' => 120],
]);
$safeName = htmlspecialchars($rawName, ENT_QUOTES, 'UTF-8');

echo "User: $safeName (Age: $age)\n";
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

يُعد التحقق من المدخلات وترميز المخرجات خطي دفاع متكاملين يعملان في نقطتين مختلفتين من دورة حياة الطلب. تحقق من المدخلات فور وصول الطلب لفرض قواعد العمل والأنواع والأطوال والتنسيقات المسموحة. استخدم استعلامات PDO المحضرة عند حفظ البيانات في قاعدة البيانات لمنع حقن SQL. رمّز المخرجات بحسب السياق الدقيق (نص HTML أو خاصية أو رابط أو JSON) لحظة العرض في القالب.