
تنبيه «تغيّر ملف» لا يعني بالضرورة أن موقعك مخترق؛ قد يكون تحديثًا لإضافة أو تعديلًا كتبه مطوّرك أمس. قيمة فحص سلامة ملفات ووردبريس أنه يخبرك بما تغيّر بالتحديد ومتى، ويقارنه بنسخة أصلية معروفة، فتقرر بناءً على دليل. وفي المقال نفسه نراجع رؤوس الأمان (Security Headers)، لأنهما معًا يغطيان سؤالين: هل تغيّر شيء على الخادم؟ وهل يتصرف المتصفح بأمان مع ما يصله؟
المختصر المفيد
- ملفات النواة لها بصمات رسمية على WordPress.org، ومقارنتها تكشف أي تعديل فورًا.
- أي ملف PHP داخل مجلد uploads يستحق التحقيق، لأن ووردبريس لا يضع كودًا هناك.
- فعّل رؤوس الأمان واحدًا بعد الآخر، وخصوصًا HSTS الذي يبقى أثره في المتصفح حتى بعد إلغائه.
ماذا يقارن فحص السلامة؟
| النطاق | المرجع | ماذا يعني التغيير |
|---|---|---|
| نواة ووردبريس (wp-admin وwp-includes وملفات الجذر) | بصمات MD5 الرسمية لنفس الإصدار من WordPress.org | لا يجب أن يتغير أي ملف هنا إلا بالتحديث؛ أي فرق مشبوه |
| إضافات وقوالب المستودع الرسمي | بصمات المستودع للإصدار المثبّت | تعديل يدوي أو حقن أو نسخة «مكركة» |
| إضافات وقوالب مدفوعة | خط أساس تلتقطه أنت بعد التأكد من سلامتها | يحتاج مقارنة بما تتوقعه من التحديثات |
| مجلد uploads | القاعدة: لا PHP إطلاقًا | ملف .php أو صورة بامتداد مزدوج مثل image.jpg.php علامة خطر |
| wp-config.php و.htaccess وmu-plugins | آخر نسخة معروفة | أماكن مفضلة لإخفاء الأبواب الخلفية والتحويلات |
افحص النواة يدويًا في دقيقة
إذا كان لديك SSH، فأداة WP-CLI تنزّل بصمات الإصدار الحالي من WordPress.org وتقارنها بملفاتك، وتعمل قبل تحميل ووردبريس نفسه، فلا يؤثر عليها كود خبيث داخل الموقع:
wp core verify-checksums
wp plugin verify-checksums --all # إضافات WordPress.org فقط
find wp-content/uploads -name "*.php" -o -name "*.phtml"رسالة «File doesn’t verify against checksum» تعني أن الملف يختلف عن الأصل. أما الإضافات المدفوعة فلا بصمات لها في المستودع، فتظهر كـ«لا يمكن التحقق» وهذا طبيعي.
عند ظهور تغيير: تصنيف قبل الحذف
- 1
هل يطابق تحديثًا معروفًا؟
قارن وقت التعديل بسجل النشاط: هل حُدّثت الإضافة في الوقت نفسه؟ إذا نعم، فالتغيير متوقع، وحدّث خط الأساس.
- 2
هل هو تعديل من الفريق؟
اسأل من يملك وصولًا إلى الملفات. التعديل المباشر على ملفات القالب الأب أو الإضافات يضيع مع أول تحديث، فانقله إلى قالب فرعي أو إضافة صغيرة.
- 3
إذا كان مجهولًا فاعزله ولا تحذفه
انقل الملف إلى مجلد حجر خارج public_html واحتفظ بنسخة منه، لأنك تحتاجه لمعرفة طريقة الدخول. الحذف المتسرع قد يكسر الموقع إذا كان الملف المعدّل ملفًا أصليًا حُقن داخله سطر.
- 4
استبدل من مصدر نظيف
ملفات النواة تُستبدل بإعادة تثبيت الإصدار نفسه، والإضافات بتنزيل نسخة جديدة. ثم غيّر كلمات المرور ومفاتيح wp-config.php، وابحث عن مدراء جدد لم تنشئهم.
- 5
التقط خط أساس جديدًا
فقط بعد التأكد أن كل شيء نظيف. خط أساس يُلتقط فوق ملفات مخترقة يجعل الفحوص القادمة تعتبر الباب الخلفي «طبيعيًا».
رؤوس الأمان: ما الذي يفعله كل رأس؟
| الرأس | قيمة شائعة | اختبر قبل التفعيل |
|---|---|---|
| Strict-Transport-Security | max-age=15552000 (180 يومًا) | أن كل النطاقات الفرعية تعمل بـ HTTPS قبل إضافة includeSubDomains |
| X-Content-Type-Options | nosniff | تحميل ملفات CSS وJS بالنوع الصحيح |
| X-Frame-Options | SAMEORIGIN | أي تضمين مشروع لموقعك داخل موقع آخر |
| Referrer-Policy | strict-origin-when-cross-origin | أدوات التتبع التي تعتمد على المصدر الكامل |
| Permissions-Policy | geolocation=(), microphone=(), camera=() | صفحات البث أو الخرائط التي تحتاج الكاميرا أو الموقع |
أما Content-Security-Policy فهو الأقوى والأصعب: سياسة خاطئة تمنع سكربتات البوابة أو التحليلات. ابدأ بوضع Report-Only لترى ما كان سيُمنع دون أن تمنعه فعلًا. وإذا كان لديك CDN أو إضافة أخرى تضبط الرؤوس نفسها، فافحص الاستجابة الفعلية من أدوات المطور حتى لا تتعارض قيمتان.
تعطيل محرر الملفات
محرر القوالب والإضافات داخل لوحة ووردبريس يعني أن أي شخص يصل إلى حساب مدير يستطيع كتابة PHP على الخادم. أضف هذا السطر إلى wp-config.php، وانتبه: إذا عرّفته هناك، فإن أي مفتاح في إضافة حماية يحاول تغييره لن يكون له أثر.
define( 'DISALLOW_FILE_EDIT', true );أسئلة عن الفحص والرؤوس
كم مرة أشغّل فحص سلامة الملفات؟
ألغيت HSTS والمتصفح ما زال يفرض HTTPS، لماذا؟
هل رؤوس الأمان تحسّن السيو؟
اقرأ كذلك
توثيق رسمي
wp core verify-checksums، وStrict-Transport-Security على MDN، ومشروع OWASP Secure Headers. آخر اطلاع: 18 أكتوبر 2026.
راقب ملفات موقعك وتحكم في الحماية
Protection Suite يقارن النواة ببصمات WordPress.org، ويبحث عن PHP في مجلد الرفع، ويضبط رؤوس الأمان مع سطر يوضح القيمة الفعلية إذا غلبها wp-config.php.
فحص السلامة في Protection Suite