التعامل مع نماذج HTML ومعالجة بيانات المستخدم هو ما يجعل التطبيقات تفاعلية. لكنه أيضاً أخطر منطقة أمنياً. في هذا الدرس نتعلم معالجة النماذج بأمان تام.
أسلوبي GET و POST
| الأسلوب | الاستخدام | البيانات |
|---|---|---|
| GET | قراءة وعرض البيانات، البحث | تظهر في الرابط |
| POST | إرسال بيانات حساسة، إضافة/تعديل | مخفية في الجسم |
form.html
<label>الاسم:</label>
<input type=“text” name=“name” required>
<label>البريد:</label>
<input type=“email” name=“email” required>
<button type=“submit”>إرسال</button>
</form>
معالجة البيانات بأمان
أهم ثلاث قواعد: التحقق من صحة البيانات (Validation)، وتنظيفها (Sanitization)، وعرضها بأمان (Escaping) لمنع هجمات XSS.
process.php
if ($_SERVER[“REQUEST_METHOD”] === “POST”) {
// 1. تنظيف المدخلات
$name = filter_input(INPUT_POST, “name”, FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, “email”, FILTER_VALIDATE_EMAIL);
// 2. التحقق من الصحة
if (!$email) {
echo “بريد غير صالح”;
exit;
}
// 3. عرض بأمان htmlspecialchars لمنع XSS
echo htmlspecialchars($name, ENT_QUOTES, “UTF-8”);
}
?>
حماية النماذج بـ CSRF Token
هجوم CSRF يجعل المستخدم ينفّذ إجراءات دون علمه. الحل: رمز عشوائي (Token) يتغير لكل جلسة ويُفحص قبل قبول الطلب.
security.php
session_start();
// توليد رمز عند أول زيارة
if (empty($_SESSION[“csrf_token”])) {
$_SESSION[“csrf_token”] = bin2hex(random_bytes(32));
}
// التحقق عند الاستلام
if (hash_equals($_SESSION[“csrf_token”], $_POST[“csrf”] ?? “”)) {
// آمن – أكمل العملية
} else {
echo “طلب غير صالح”;
}
?>
تمارين
- ابني نموذج تسجيل دخول كامل مع تحقق من الصحة
- أضف حقلاً للعمر وتحقّق أنه رقم بين 13 و 100
- طبّق CSRF token على النموذج السابق
0 تعليق