أمان WordPress: دليل الحماية الشامل
استراتيجيات أساسية لحماية موقع WordPress الخاص بك من التهديدات
مقدمة
يشغل WordPress أكثر من 40% من جميع المواقع الإلكترونية، مما يجعله هدفاً رئيسياً للهاكرز والهجمات الخبيثة. إن تطبيق إجراءات أمان قوية ليس اختيارياً – بل أمر بالغ الأهمية لحماية بياناتك وسمعتك واستمرارية أعمالك. يغطي هذا الدليل أكثر الممارسات الأمنية فعالية منظمة حسب طبقات الحماية، من أمان تسجيل الدخول إلى دفاعات مستوى الخادم. اتبع هذه التوصيات لتقليل تعرضك بشكل كبير لهجمات WordPress الشائعة.
الخطة
- 1. أمان تسجيل الدخول في WordPress
- 2. قيود الملفات
- 3. حماية البيانات
- 4. أمان قاعدة البيانات
- 5. HTTPS/SSL
- 6. جدار الحماية للتطبيقات الويب
- 7. إضافات الأمان
- 8. التحديثات والنسخ الاحتياطية
1. أمان تسجيل الدخول في WordPress
استخدم كلمات مرور قوية:

كلمات المرور القوية لا تقتصر فقط على منطقة إدارة WordPress – أنشئ كلمات مرور قوية لحسابات FTP وقواعد البيانات وحسابات الاستضافة وعناوين البريد الإلكتروني للنطاق. يجب أن تفي كلمات المرور الآمنة بهذه المعايير:
- -حرف واحد كبير على الأقل
- -حرف واحد صغير على الأقل
- -رقم واحد على الأقل
- -رمز خاص واحد على الأقل
- -10 أحرف كحد أدنى (الأطول أفضل)
قيد محاولات تسجيل الدخول:

بشكل افتراضي، يسمح WordPress بمحاولات تسجيل دخول غير محدودة، تاركاً موقعك عرضة لهجمات القوة الغاشمة حيث يحاول الهاكرز تركيبات كلمات المرور. أضف الحماية بواسطة:
- تقييد محاولات تسجيل الدخول من خلال إضافات مثل Limit Login Attempts أو Loginizer
- تنفيذ جدار حماية للتطبيقات الويب (WAF)
غيّر اسم المستخدم الافتراضي للمدير:

نظراً لأن أسماء المستخدمين تشكل نصف بيانات اعتماد تسجيل الدخول، فإن اسم المستخدم الافتراضي “admin” يجعل هجمات القوة الغاشمة أسهل. أنشئ دائماً أسماء مستخدمين مخصصة أثناء التثبيت.
استخدم كابتشا ما قبل تسجيل الدخول:

الكابتشا (اختبار تورينج العام المؤتمت بالكامل لتمييز الحاسوب والبشر) توقف الروبوتات المؤتمتة من الوصول إلى لوحة التحكم أو إرسال البريد العشوائي. نفذ باستخدام إضافات مثل:
- -reCAPTCHA بواسطة BestWebSoft
- -Really Simple CAPTCHA
صلاحيات المستخدم:

اتبع مبدأ أقل امتياز – اعطِ فقط الصلاحيات الضرورية للمستخدمين. أدوار WordPress تشمل:
- -مدير
- -محرر
- -مؤلف
- -مساهم
- -مشترك
مصادقة العاملين (2FA):

2FA يتطلب شكلين من أشكال الهوية قبل منح الوصول:
- -شيء تعرفه (كلمة المرور)
- -شيء تملكه (هاتف/تطبيق مصادقة)
- -شيء أنت عليه (بيانات حيوية – اختياري)
الإضافة الموصى بها: WP 2FA – Two-factor Authentication
تعطيل XML-RPC في WordPress:

XML-RPC يمكن التواصل عن بعد لكنه ينشئ مخاطر أمنية:
- -هجمات القوة الغاشمة
- -هجمات DDoS
- -إساءة استخدام Pingback
طرق التعطيل:
- -إضافة: Disable XML-RPC
- -كود: أضف إلى functions.php
add_filter('xmlrpc_enabled', '__return_false'); - -.htaccess: حجب الوصول إلى xmlrpc.php
استخدم رابط تسجيل دخول مخصص:

غيّر الافتراضي /wp-admin أو /wp-login.php إلى رابط فريد:
- إضافة: WPS Hide Login
- طريقة يدوية: أعد تسمية wp-login.php وحديث المراجع
- قاعدة إعادة توجيه .htaccess
تسجيل خروج المستخدمين الخاملين تلقائياً:

ثبت إضافة Inactive Logout لتسجيل خروج المستخدمين الخاملين تلقائياً بعد فترة محددة، مما يمنع الوصول غير المصرح به من الجلسات غير المراقبة.
2. قيود الملفات
تعطيل تحرير الملفات:
يأتي WordPress مع محرر كود مدمج يسمح بتحرير ملفات القوالب والإضافات من منطقة الإدارة. عطل هذا بإضافة ما يلي إلى wp-config.php:
define('DISALLOW_FILE_EDIT', true);

تأمين ملف wp-config.php:
نقل wp-config.php: انقل الملف مستوى واحد فوق دليل WordPress الجذر
قيد صلاحيات الملف: اضبط الصلاحيات على 444 (قراءة فقط لجميع المستخدمين)
تفصيل الصلاحيات: 4 = قراءة 2 = كتابة 1 = تنفيذ 444 يعني: - المالك: قراءة فقط - المجموعة: قراءة فقط - الآخرون: قراءة فقط
قيد الوصول إلى wp-admin:
اقصر وصول لوحة تحكم المدير على IPs محددة بتحرير .htaccess:
Order deny,allow Deny from all Allow from 123.456.789.0 Allow from 234.567.890.1
حجب الوصول إلى دليل wp-includes:
أضف هذا إلى .htaccess لحماية الملفات الأساسية:
<FilesMatch "\.(engine|inc|info|install|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl|svn-base)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template|all-wcprops|entries|format)$"> Order allow,deny
تعطيل خريطة الموقع XML:
أضف إلى functions.php لمنع مسح المحتوى:
add_filter('wp_sitemaps_enabled', '__return_false');

إحصاء المستخدمين عبر خرائط الموقع XML:
امنع كشف أسماء المستخدمين مع الاحتفاظ بخرائط الموقع:
add_filter('wp_sitemaps_add_provider', function($provider, $name) {
return $name === 'users' ? false : $provider;
}, 10, 2);

معلومات المستخدم عبر REST API:
قيد كشف بيانات المستخدم في REST API:
add_filter('rest_authentication_errors', function($result) {
if (!empty($result)) return $result;
if (!is_user_logged_in()) return new WP_Error('rest_not_logged_in', 'You are not currently logged in.', array('status' => 401));
return $result;
});

إخفاء معلومات المستخدم في REST API:
أزل نقاط نهاية المستخدم بالكامل:
add_filter('rest_endpoints', function($endpoints) {
if (isset($endpoints['/wp/v2/users'])) unset($endpoints['/wp/v2/users']);
if (isset($endpoints['/wp/v2/users/(?P[\d]+)'])) unset($endpoints['/wp/v2/users/(?P[\d]+)']);
return $endpoints;
});
تعطيل فهرسة الدليل والتصفح:
أضف إلى .htaccess لمنع قائمة محتوى المجلد:
Options -Indexes
تعطيل سجلات الخطأ:
أضف إلى wp-config.php لمنع كشف الأخطاء الحساسة:
@ini_set('display_errors', 0);
define('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', false);
3. حماية البيانات
التطهير:
التطهير يضمن أن بيانات الإدخال يتم تنظيفها قبل الاستخدام أو التخزين. يزيل الأحرف غير المرغوب فيها أو الضارة المحتملة.
// أمثلة على دوال التطهير sanitize_text_field(); sanitize_email(); sanitize_key(); sanitize_textarea_field();
يحمي ضد حقن SQL
حقن SQL يحدث عندما يتلاعب المهاجمون بقاعدة بيانات الموقع عن طريق حقن استعلامات SQL خبيثة في حقول الإدخال. يستخدم WordPress wpdb للتفاعل مع قاعدة البيانات، وتطهير مدخلات المستخدم يضمن إزالة الأحرف الضارة قبل عمليات قاعدة البيانات.
التحقق:
التحقق يفحص ما إذا كان الإدخال يتوافق مع التنسيق أو النوع المتوقع.
// أمثلة على دوال التحقق is_email(); is_numeric(); ctype_alpha(); filter_var();
يضمن سلامة البيانات
التحقق من البيانات وتطهيرها يحافظ على سلامة الموقع من خلال ضمان قبول ومعالجة الإدخال المشروع فقط.
التصفية:
التصفية تضمن أن البيانات آمنة للإخراج في HTML والروابط والسياقات الأخرى.
// أمثلة على دوال التصفية esc_html(); esc_attr(); esc_url();
يمنع هجمات البرمجة النصية عبر المواقع (XSS)
هجمات XSS تحدث عندما يتم حقن نصوص خبيثة في صفحات الويب. التصفية تضمن أن إخراج البيانات إلى المتصفحات يُعامل كنص بدلاً من كود قابل للتنفيذ.
Nonces للأمان:
استخدم nonces لحماية النماذج من هجمات CSRF (تزوير الطلبات عبر المواقع) حيث يخدع المستخدمون غير المصرح لهم المستخدمين المصدق عليهم لتنفيذ إجراءات غير مقصودة.
// إضافة nonce للنموذج
wp_nonce_field('my_action_name', 'my_nonce_field');
// التحقق من nonce عند معالجة النموذج
if (!wp_verify_nonce($_POST['my_nonce_field'], 'my_action_name')) {
die('Security check failed');
}
4. أمان قاعدة البيانات
غيّر بادئة قاعدة بيانات WordPress:
افتراضياً، يستخدم WordPress wp_ كبادئة لجميع جداول قاعدة البيانات. غيّر هذا أثناء التثبيت أو لاحقاً عبر wp-config.php:
// في wp-config.php $table_prefix = 'myprefix_';
النسخ الاحتياطية لقاعدة البيانات:
انسخ قاعدة البيانات احتياطياً بانتظام باستخدام الإضافات أو أدوات الاستضافة.
5. نقل موقع WordPress إلى SSL/HTTPS
SSL يشفر نقل البيانات بين موقعك ومتصفحات المستخدمين. اجبر HTTPS بإضافة إلى wp-config.php:
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
وحديث رابط الموقع في الإعدادات ← عام لاستخدام https://
6. تفعيل جدار حماية تطبيقات الويب (WAF)
خيارات جدار الحماية:
- حلول الإضافات: Wordfence، Sucuri
- WAF المستند إلى السحابة: Cloudflare، Sucuri Firewall
لـ Cloudflare، أضف إلى .htaccess:
# Cloudflare IPs Allow from 103.21.244.0/22 Allow from 103.22.200.0/22 # ... (جميع نطاقات IP الخاصة بـ Cloudflare) Deny from all
7. استخدم إضافة أمان
إضافات الأمان الموصى بها:
1. Wordfence Security 2. iThemes Security 3. Sucuri Security
إعدادات إضافة الأمان الأساسية للتفعيل:
// مثال على إجراءات التقوية
define('DISALLOW_FILE_EDIT', true);
define('AUTOMATIC_UPDATER_DISABLED', false);
8. أبقِ WordPress والقوالب والإضافات محدثة
استراتيجية التحديث:
- فعل التحديثات التلقائية للأساسيات في wp-config.php:
define('WP_AUTO_UPDATE_CORE', true);
- للإضافات/القوالب، أضف إلى functions.php:
add_filter('auto_update_plugin', '__return_true');
add_filter('auto_update_theme', '__return_true');
حلول النسخ الاحتياطي:
1. UpdraftPlus (إضافة)
2. BackupBuddy (إضافة)
3. VaultPress (Jetpack)
4. النسخ الاحتياطية المقدمة من الاستضافة
أمر النسخ الاحتياطي اليدوي (عبر SSH):
# نسخ احتياطي لقاعدة البيانات mysqldump -u username -p database_name > backup.sql # نسخ احتياطي للملفات tar -czvf site_backup.tar.gz /path/to/wordpress
