مقالات علاء عامر

نقدم مجموعة شاملة من مقالات التعليمية الهامة في تطوير الويب لتحويل أفكارك إلى واقع رقمي

أمان تطبيقات الويب PHP: دليل شامل للحماية

PHP 2025-12-31 علاء عامر

أمان تطبيقات الويب PHP: دليل شامل للحماية

دليل متخصص من علاء عامر - مطور ومصمم مواقع وتطبيقات احترافية

أمان التطبيقات هو أولوية قصوى لأي مطور PHP محترف. في هذا المقال، سنغطي أهم الثغرات الأمنية وكيفية حماية تطبيقاتك منها.

2️⃣ الحماية من SQL Injection

المشكلة:

// خطير جداً - لا تفعل هذا أبداً!
$username = $_POST['username'];
$password = $_POST['password'];

$query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
$result = mysql_query($query);

الحل الآمن:

class SecureAuth {
    private $pdo;

    public function __construct($pdo) {
        $this->pdo = $pdo;
    }

    public function authenticateUser($username, $password) {
        // استخدام Prepared Statements
        $query = "SELECT id, username, password_hash FROM users WHERE username = :username LIMIT 1";
        $stmt = $this->pdo->prepare($query);
        $stmt->bindParam(':username', $username, PDO::PARAM_STR);
        $stmt->execute();

        $user = $stmt->fetch(PDO::FETCH_ASSOC);

        if ($user && password_verify($password, $user['password_hash'])) {
            return $user;
        }

        return false;
    }

    public function createUser($username, $email, $password) {
        // تشفير كلمة المرور
        $hashedPassword = password_hash($password, PASSWORD_DEFAULT);

        $query = "INSERT INTO users (username, email, password_hash, created_at) VALUES (:username, :email, :password, NOW())";
        $stmt = $this->pdo->prepare($query);

        $stmt->bindParam(':username', $username);
        $stmt->bindParam(':email', $email);
        $stmt->bindParam(':password', $hashedPassword);

        return $stmt->execute();
    }
}

4️⃣ الحماية من CSRF Attacks

class CSRFProtection {
    /**
     * توليد CSRF token
     */
    public static function generateToken() {
        if (session_status() == PHP_SESSION_NONE) {
            session_start();
        }

        $token = bin2hex(random_bytes(32));
        $_SESSION['csrf_token'] = $token;
        $_SESSION['csrf_token_time'] = time();

        return $token;
    }

    /**
     * التحقق من CSRF token
     */
    public static function verifyToken($token) {
        if (session_status() == PHP_SESSION_NONE) {
            session_start();
        }

        // التحقق من وجود Token في الجلسة
        if (!isset($_SESSION['csrf_token']) || !isset($_SESSION['csrf_token_time'])) {
            return false;
        }

        // التحقق من انتهاء صلاحية Token (ساعة واحدة)
        if (time() - $_SESSION['csrf_token_time'] > 3600) {
            unset($_SESSION['csrf_token'], $_SESSION['csrf_token_time']);
            return false;
        }

        // التحقق من تطابق Token
        if (hash_equals($_SESSION['csrf_token'], $token)) {
            return true;
        }

        return false;
    }

    /**
     * إنشاء حقل مخفي للنموذج
     */
    public static function getFormField() {
        $token = self::generateToken();
        return "<input type=\"hidden\" name=\"csrf_token\" value=\"{$token}\">";
    }
}

// في النموذج
echo CSRFProtection::getFormField();

// عند استقبال النموذج
if ($_POST && CSRFProtection::verifyToken($_POST['csrf_token'])) {
    // معالجة البيانات بأمان
    processForm();
} else {
    die('Invalid CSRF token');
}

6️⃣ إعداد Headers الأمان

class SecurityHeaders {
    public static function setSecurityHeaders() {
        // منع تحميل الصفحة في iframe (Clickjacking protection)
        header('X-Frame-Options: DENY');

        // منع MIME type sniffing
        header('X-Content-Type-Options: nosniff');

        // تفعيل XSS protection في المتصفح
        header('X-XSS-Protection: 1; mode=block');

        // إجبار HTTPS
        header('Strict-Transport-Security: max-age=31536000; includeSubDomains');

        // Content Security Policy
        header("Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'");

        // إزالة معلومات الخادم
        header_remove('X-Powered-By');
    }
}

// تطبيق Headers في بداية كل صفحة
SecurityHeaders::setSecurityHeaders();

💡 خلاصة أفضل الممارسات الأمنية

  1. لا تثق بأي مدخل من المستخدم - نظف واختبر كل شيء
  2. استخدم HTTPS دائماً - خاصة للبيانات الحساسة
  3. طبق مبدأ أقل الصلاحيات - أعط أقل صلاحية ممكنة
  4. حدث تطبيقاتك باستمرار - تابع الثغرات الأمنية الجديدة
  5. استخدم أدوات فحص الأمان - مثل OWASP ZAP

الخطوة التالية

تعلم Penetration Testing و Security Auditing لتطبيقات PHP.

📩 تحتاج استشارة أمنية لتطبيقك؟

PHP Security Web Security SQL Injection XSS CSRF
قسم المقالة
PHP

أمان تطبيقات الويب PHP: دليل شامل للحماية

كيفية حماية تطبيقات PHP من الثغرات الأمنية الشائعة مع أمثلة عملية وأفضل الممارسات للأمان.

أمان تطبيقات الويب PHP: دليل شامل للحماية
01

التواصل والاستشارة

تواصل مباشر عبر الواتساب أو الهاتف لفهم احتياجات مشروعك بدقة.

02

التخطيط والجدولة

وضع خطة عمل واضحة مع جدول زمني محدد لكل مرحلة من المشروع.

03

البرمجة والتطوير

تطوير المشروع بأحدث التقنيات لضمان الأداء والأمان العاليين.

04

المراجعة والتسليم

ختبار شامل ومراجعة دقيقة قبل التسليم النهائي للمشروع.

علاء عامر
علاء عامر

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

هل تحتاج هذه الخدمة؟

تواصل معي الآن للحصول على استشارة مجانية وعرض سعر

تواصل عبر واتساب رضاكم هو هدفنا الأسمى

عروض إضافية

  • صيانة وتحديث المواقع

    نحافظ على موقعك آمنًا ومحدّثًا دائمًا

  • ربط الأنظمة وواجهات البرمجة

    نربط أنظمتك بواجهات برمجية قوية ومرنة

  • تصميم وتحسين قواعد البيانات

    استعلامات أسرع وهيكلة أوضح وأخطاء أقل

  • تأمين المواقع والحماية المتقدمة

    حماية موقعك من التهديدات السيبرانية

  • أتمتة العمليات والمهام البرمجية

    نؤتمت المهام المتكررة ونوفّر وقتك دائمًا

لديك استفسار؟

اتصل بنا الآن

00201014714795

راسلنا عبر البريد الإلكتروني

[email protected]