ملف wp-config.php أكثر الملفات حساسية في تثبيت ووردبريس. فهو يحمل بنص صريح اسم قاعدة البيانات والمستخدم وكلمة المرور والمضيف، إلى جانب مفاتيح المصادقة والأملاح التي يستخدمها ووردبريس لتوقيع ملفات تعريف الارتباط الخاصة بالدخول. ومن يستطيع قراءته يستطيع قراءة قاعدة بياناتك كلها. ويستحق حماية أشد من نظام 644 و755 المطبَّق على سائر الملفات.
شدّد أذوناته
القيمة الافتراضية عادةً 644، وهي تسمح لكل مستخدم على الخادم بقراءة الملف. وعلى الاستضافة المشتركة، «كل مستخدم» ليست فرضية. شدّدها:
- 600 (المالك يقرأ ويكتب) أشد الخيارات الشائعة.
chmod 600 wp-config.php - 640 (المالك يقرأ ويكتب والمجموعة تقرأ) مطلوب في بعض الاستضافات التي يعمل فيها خادم الويب بمجموعة الملف لا بمالكه.
- 440 أو 400 (للقراءة فقط) يصلح أيضًا ويمنع تعديل الملف بالخطأ أو بواسطة سكربت. وعندها تحتاج إلى تخفيفه لحظيًا عند التعديل.
الاختبار بسيط: طبّق أشد قيمة ثم حمّل الموقع. إذا ظهر خطأ في قاعدة البيانات أو صفحة بيضاء فمعناه أن PHP لم يستطع قراءة الملف، فانتقل إلى 640. ولا تقفز إلى 777 الذي يجعل الملف قابلًا للكتابة من الجميع. ويغطي دليل أذونات الملفات بقية الموقع.
انقله فوق جذر الويب
يبحث ووردبريس عن wp-config.php في مجلده أولًا ثم في المجلد الذي فوقه. فإذا رفعت الملف مستوى واحدًا لم يعد داخل المجلد الذي ينشره خادم الويب. وحتى لو قدّم خطأ في الإعدادات يومًا ما شيفرة PHP كنص بدل تنفيذها، فلن يكون الملف موجودًا ليُعثر عليه.
ينجح هذا حين يكون ووردبريس في جذر الويب ولا يكون في المجلد الأب شيء آخر هو تثبيت ووردبريس. وبعض الاستضافات المشتركة المقيِّدة تمنع الوصول خارج جذر الويب، وعندها اتركه مكانه واعتمد على الأذونات وقاعدة الخادم أدناه.
احجب الطلبات المباشرة عند خادم الويب
على Apache يمكن لقاعدة في .htaccess أن ترفض أي طلب للملف عبر عنوانه. أضف هذا قرب أعلى الملف في جذر موقعك:
<Files wp-config.php> Require all denied </Files>
وعلى Nginx يكون المكافئ كتلة location = /wp-config.php تُرجع 404 أو ترفض الطلب. ويمكن لدعم استضافتك إضافتها إن كنت لا تدير إعدادات الخادم.
دوّر المفاتيح السرية بعد أي حادثة
يحتوي الملف أيضًا على ثمانية مفاتيح مصادقة وأملاح. يستخدمها ووردبريس لتوقيع ملفات تعريف الارتباط الخاصة بالدخول. إذا اشتبهت أن أحدًا وصل إلى الملف، فولّد مجموعة جديدة واستبدل القيم القديمة. عندها تُبطَل كل الجلسات القائمة، فيُسجَّل خروج كل من يحمل ملف تعريف ارتباط مسروقًا، دون أن يضطر أحد إلى تغيير كلمة مرور. ومع WP-CLI يكفي أمر واحد: wp config shuffle-salts. وإلا فاستخدم مولّد المفاتيح السرية الرسمي لووردبريس والصق النتيجة.
بعض الإعدادات الآمنة للإضافة
- عطّل محرر الملفات المدمج. يزيل
define( 'DISALLOW_FILE_EDIT', true );محرري القوالب والإضافات من wp-admin، فلا يمكن استخدام دخول مسؤول مسروق لتعديل PHP من المتصفح. - أبقِ مخرجات التصحيح معطّلة في الإنتاج. يجب أن تكون
WP_DEBUGبقيمة false على موقع حي. وإذا احتجت إلى سجلات فأرسلها إلى ملف عبرWP_DEBUG_LOGواجعلWP_DEBUG_DISPLAYبقيمة false، لأن الأخطاء المعروضة على الشاشة قد تكشف مسارات الملفات. - افرض HTTPS على تسجيل الدخول. يُبقي
define( 'FORCE_SSL_ADMIN', true );منطقة الإدارة وتسجيل الدخول عبر HTTPS. - امنح مستخدم قاعدة البيانات ما يحتاجه فقط. يجب أن يصل إلى قاعدة بيانات هذا الموقع دون غيرها، وأن تكون كلمة مروره فريدة، كما تنصح قائمة فحص الأمان.
كيف تختبر ذلك
اطلب الملف كما يفعل غريب. شغّل curl -I https://yoursite.example/wp-config.php. المطلوب 403 أو 404، أو 200 بجسم فارغ (نُفِّذ PHP ولم يطبع شيئًا). وإذا رأيت يومًا نص الملف فتوقف وغيّر فورًا كلمة مرور قاعدة البيانات والمفاتيح السرية. ثم تحقق من أذونات الملف بالأمر ls -l wp-config.php وتأكد أن الموقع ما زال يعمل.
ما لا ينبغي فعله
لا تخفّف أذونات الملف لـ«إصلاح» إضافة تقول إنها لا تستطيع قراءته. فهذه في الغالب مشكلة في مكان آخر، و777 على الملف الذي يحمل كلمة مرور قاعدة بياناتك من أسوأ الأماكن لارتكاب خطأ. ولا تترك نسخًا في مجلدات عامة أيضًا. فملف wp-config.php.bak أو wp-config.old منسي في جذر الموقع أو في uploads/ طريق شائع لتسرّب هذا الملف، لأن الخادم يقدّمه نصًا عاديًا. احذف النسخ أو احتفظ بها خارج جذر الويب.
يفحص SiftWP أذونات wp-config.php وموقعه ضمن فحصه الأسبوعي وينبّه إذا تُرك الملف مقروءًا للجميع أو في مكان لا ينبغي أن يكون فيه. تعمل الفحوص عبر SSH دون أي إضافة على الموقع.