دليل حماية وتأمين تطبيقات الويب ضد الاختراق والثغرات البرمجية

1. تفعيل شهادة الأمان SSL / TLS

فرض تشفير الاتصالات بالكامل عبر بروتوكول HTTPS وحماية بيانات الزوار:

# إعادة توجيه كافة الزيارات إلى HTTPS تلقائياً
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
2. تفعيل سياسة أمان المحتوى (CSP)

منع تشغيل السكربتات الخبيثة وحقن الأكواد الضارة (XSS) في المتصفح:

<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://trustedscripts.com;">
3. حماية النماذج ضد هجمات CSRF

استخدام رموز تحقق أمان عشوائية (Tokens) لمنع تزوير الطلبات عبر المواقع الخارجية:

<input type="hidden" name="csrf_token" value="a9f8c7b6e5d43210...">
4. منع هجمات حقن قواعد البيانات (SQL Injection)

الاعتماد على الاستعلامات المُجهزة (Prepared Statements) بدلاً من دمج النصوص المباشرة:

$stmt = $pdo->prepare('SELECT * FROM users WHERE email = ?');
$stmt->execute([$userEmail]);
$user = $stmt->fetch();
5. تعقيم وتنظيف المدخلات (Input Sanitization)

فحص البيانات القادمة من المستخدمين وإزالة أي أكواد برمجية مشبوهة قبل معالجتها:

$cleanInput = htmlspecialchars($_POST['username'], ENT_QUOTES, 'UTF-8');
6. تأمين ملفات تعريف الارتباط (Secure Cookies)

إلزام المتصفح بإرسال الكوكيز حصرياً عبر قنوات مشفرة ومنع الوصول إليها عبر JavaScript:

Set-Cookie: session_id=xyz123; Secure; HttpOnly; SameSite=Strict
7. تفعيل رأسية حماية النقر (X-Frame-Options)

منع عرض موقعك داخل إطارات (Iframes) في مواقع أخرى للحماية من هجمات Clickjacking:

header("X-Frame-Options: DENY");
8. منع الكشف عن نوع المتصفح أو السيرفر (Server Masking)

إخفاء معلومات الإصدار الخاص بالخادم لتصعيب مهمة المخترقين في استهداف الثغرات:

# إخفاء تفاصيل السيرفر في ملف الإعدادات
ServerSignature Off
ServerTokens Prod
9. تفعيل جدار حماية تطبيقات الويب (WAF)

الاعتماد على خدمات حماية متقدمة مثل Cloudflare لصد هجمات الحرمان من الخدمة (DDoS):

// تفعيل وضع الأمان الشديد (Under Attack Mode) عند رصد حركة مرور ضارة
10. إخفاء وإغلاق المجلدات الحساسة

منع تصفح محتويات المجلدات والملفات البرمجية الفارغة أو الخاصة بالسكربتات:

# منع عرض محتويات المجلدات في خوادم أباتشي
Options -Indexes
11. تشفير كلمات المرور بقوة (Password Hashing)

تخزين كلمات المرور باستخدام خوارزميات تشفير لا رجعة فيها مثل Bcrypt أو Argon2:

$hashedPassword = password_hash($userPassword, PASSWORD_BCRYPT);
12. تأمين عمليات تسجيل الدخول ضد التخمين (Brute Force)

تحديد عدد محاولات تسجيل الدخول الفاشلة المؤقتة أو استخدام التحقق البشري (CAPTCHA):

// قفل الحساب مؤقتة أو تفعيل كود تحقق بعد 3 محاولات خاطئة متتالية
13. حظر تفعيل الملفات التنفيذية في مجلدات الرفع

منع تشغيل أي ملفات برمجية (مثل PHP) يتم رفعها عبر مستخدمي الموقع في مجلد الصور:

<FilesMatch "\.(php|phtml|php3|sh)$">
    Order Deny,Allow
    Deny from all
</FilesMatch>
14. فرض سياسة الأمن الشامل للمتصفحات (HSTS)

إجبار المتصفحات على فتح الموقع حصرياً عبر HTTPS دون السماح بالرجوع لـ HTTP:

header("Strict-Transport-Security: max-age=31536000; includeSubDomains; preload");
15. منع هجمات حقن الملفات (Remote File Inclusion)

تعطيل جلب واستدعاء الملفات الخارجية عبر متغيرات روابط الـ URL في السيرفر:

# إعدادات ملف php.ini للحماية
allow_url_fopen = Off
allow_url_include = Off
16. تفعيل نظام الصلاحيات الآمن للملفات على السيرفر

منع تعديل الملفات البرمجية الأساسية عبر منحها صلاحيات قراءة فقط (Permissions):

# ضبط صلاحيات الملفات الحساسة لتكون 644 والمجلدات 755
chmod 644 index.php
17. المراقبة المستمرة لسجلات الأخطاء (Error Logging)

حفظ الأخطاء البرمجية في ملفات خلفية مخفية وعدم إظهارها للمستخدمين نهائياً:

ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', '/secure/path/to/error.log');
18. إنشاء نظام نسخ احتياطي آمن ودوري (Backups)

أتمتة حفظ نسخ من قواعد البيانات والملفات وتخزينها في أماكن سحابية معزولة:

# سكربت دوري لضغط وحفظ قاعدة البيانات
mysqldump -u db_user -p db_name | gzip > /secure_backup/backup_$(date +%F).sql.gz
19. التحقق من صحة ونطاق الروابط الخارجية (URL Validation)

التأكد من أن الروابط المدخلة تتبع نطاقات موثوقة لمنع هجمات التوجيه الخبيث (Open Redirect):

function isValidRedirectUrl(string $url): bool {
    $parsed = parse_url($url);
    return isset($parsed['host']) && $parsed['host'] === 'mywebsite.com';
}
20. فحص الثغرات الآلية المستمرة (Vulnerability Scanning)

استخدام أدوات فحص الحماية البرمجية الآلية لاكتشاف الثغرات في الأكواد قبل استغلالها:

// فحص دوري عبر أدوات الـ Static Code Analysis ومكتبات الحماية المعتمدة
21. تحديد حجم ونوع الملفات المرفوعة بدقة

منع رفع الملفات الكبيرة أو الضارة عبر فحص امتداد وحجم الملف الفعلي:

$allowedTypes = ['image/jpeg', 'image/png', 'image/webp'];
if (!in_array($_FILES['uploadedFile']['type'], $allowedTypes)) {
    die("نوع الملف غير مسموح به نهائياً!");
}
22. تفعيل المصادقة الثنائية للوحة التحكم (2FA)

إضافة طبقة أمان إضافية عبر تطبيق Google Authenticator لتسجيل الدخول الإداري:

// التحقق من رمز OTP المكون من 6 أرقام قبل السماح بدخول لوحة الإدارة
23. منع هجمات حرمان الخدمة الموزعة (DDoS Mitigation)

تحديد معدل الطلبات المسموح به لكل عنوان IP (Rate Limiting) لحماية السيرفر:

# حظر الـ IP المؤقت في حال تجاوز عدد محدد من الطلبات في الثانية
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
24. منع هجمات حقن الأكواد عبر الـ Headers (Header Injection)

التحقق من عدم وجود حروف أسطر جديدة (\r\n) في البيانات المرسلة لرؤوس HTTP:

function cleanHeaderInput(string $data): string {
    return str_replace(["\r", "\n"], '', $data);
}
25. تأمين واجهات الـ APIs بـ Bearer Tokens

حماية مسارات جلب البيانات عبر مفاتيح مصادقة مشفرة ومنع الوصول العشوائي:

$headers = getallheaders();
if (!isset($headers['Authorization']) || $headers['Authorization'] !== 'Bearer SECRET_API_KEY') {
    http_response_code(401);
    exit("غير مخول بالوصول!");
}
26. إغلاق المنافذ والخدمات غير المستخدمة في السيرفر

التأكد من فتح المنافذ الضرورية فقط (مثل 80 و 443 و 22) وإغلاق البقية نهائياً:

# فحص المنافذ المفتوحة وإعداد جدار الحماية (UFW)
sudo ufw allow 443/tcp
sudo ufw enable
27. فحص سلامة الملفات عبر بصمة الحفظ (File Integrity Monitoring)

مراقبة ما إذا تم تعديل أي ملف برمجي أساسي على السيرفر بشكل غير مبرر:

# مقارنة قيمة الـ Hash للملفات للتأكد من عدم اختراقها أو تعديلها
sha256sum core_script.php
28. منع هجمات التتبع والتنصت عبر بروتوكول HSTS Preloading

تسجيل نطاق موقعك ضمن القوائم العالمية للمتصفحات لفرض الحماية المشفرة دائماً:

// تضمين الموقع رسمياً في قائمة HSTS Preload الخاصة بالمتصفحات الكبرى
29. تعطيل تتبع الأخطاء المتقدم للمستخدمين النهائيين

عرض صفحات خطأ عامة وموحدة (مثل Error 404 أو 500) وعدم كشف تفاصيل لغة البرمجة:

ErrorDocument 404 /custom-404.html
ErrorDocument 500 /custom-500.html
30. التحديث الدوري المستمر لأنظمة التشغيل والمكتبات

الرصد الدائم وتحديث إصدارات اللغات، الحزم البرمجية، والسيرفر لسد الثغرات المكتشفة:

# تحديث حزم النظام والأمان بانتظام
sudo apt update && sudo apt upgrade -y