دروس تعليمية متوسط

احتراف PHP من الصفر — الدرس 6

1 دقيقة قراءة
PHP, Forms, Security
01 المقدمة
02 المتطلبات
03 التثبيت
04 الإعداد
05 التطبيق
06 النتيجة
07 الخطوة 7
08 الخطوة 8
09 الخطوة 9

التعامل مع نماذج HTML ومعالجة بيانات المستخدم هو ما يجعل التطبيقات تفاعلية. لكنه أيضاً أخطر منطقة أمنياً. في هذا الدرس نتعلم معالجة النماذج بأمان تام.

أسلوبي GET و POST

الأسلوب الاستخدام البيانات
GET قراءة وعرض البيانات، البحث تظهر في الرابط
POST إرسال بيانات حساسة، إضافة/تعديل مخفية في الجسم

form.html

<form method=“post” action=“process.php”>
  <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

<?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

<?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 “طلب غير صالح”;
}
?>

✅
القاعدة الذهبية
لا تثق أبداً ببيانات المستخدم. تحقق، نظّف، ثم اعرض بأمان. هذا هو الفرق بين مطور هاوٍ ومطور محترف.

تمارين

  1. ابني نموذج تسجيل دخول كامل مع تحقق من الصحة
  2. أضف حقلاً للعمر وتحقّق أنه رقم بين 13 و 100
  3. طبّق CSRF token على النموذج السابق

0 تعليق

أضف تعليقاً