شرح صفوف ومحتوى الفقرة
يُعد التحقق من المدخلات وترميز المخرجات خطي دفاع متكاملين يعملان في نقطتين مختلفتين من دورة حياة الطلب.
- تحقق من المدخلات فور وصول الطلب لفرض قواعد العمل والأنواع والأطوال والتنسيقات المسموحة.
- استخدم استعلامات PDO المحضرة عند حفظ البيانات في قاعدة البيانات لمنع حقن SQL.
- رمّز المخرجات بحسب السياق الدقيق (نص HTML أو خاصية أو رابط أو JSON) لحظة العرض في القالب.
تتحقق filter_var() من كون العمر عدداً صحيحاً ضمن النطاق عند الإدخال، بينما ترمّز htmlspecialchars() الاسم عند الطباعة في HTML.
| مرحلة الحماية | الأداة الأساسية في PHP | التهديد المستهدف |
|---|---|---|
| Input Validation | filter_var() / preg_match() | Malformed data & type errors |
| Database Layer | PDO prepare() + execute() | SQL Injection (SQLi) |
| HTML Body & Quoted Attr | htmlspecialchars(..., ENT_QUOTES) | Reflected & Stored XSS |
| Inline JS Data | json_encode(..., JSON_HEX_TAG) | Script breakout XSS |
| Link href / src URLs | parse_url() scheme whitelist | javascript: 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) لحظة العرض في القالب.