التثبيت والتفعيل وخطة التشغيل
- خذ نسخة احتياطية من الملفات وقاعدة البيانات، وجرّب التثبيت على نسخة تجريبية إذا كان الموقع يستقبل طلبات أو مشاهدين.
- نزّل ملف ZIP الخاص بالإضافة من حسابك أو رابط التنزيل المصرّح به. من ووردبريس افتح «الإضافات ← أضف إضافة جديدة ← رفع إضافة»، واختر الملف ثم ثبّت وفعّل.
- افتح قائمة الإضافة ثم شاشة «التفعيل» أو «التفعيل والتحديثات»، وأدخل كود الترخيص المخصص لها. راجع الدومين وحالة التفعيل وعدد المواقع المسموح بها.
- اضبط الإعدادات واحفظها، ثم اختبر بحساب مستخدم عادي؛ حساب المدير قد يمتلك استثناءات لا يمتلكها العميل.
الحد الأدنى المسجّل لهذه الإضافات: WordPress 5.6 وPHP 7.4. هذه حدود توافق وليست توصية باستخدام نسخ قديمة. حالة «تم الاختبار حتى» المعروضة في صفحة المنتج تصف بيانات الإصدار ولا تعني أن كل تركيب من القوالب والإضافات مختبَر.
افتح «MirrorORG Protection». شاشة لوحة التحكم تعرض الوحدات وحالتها. ابدأ بالوحدات التي تحتاجها، ثم فعّل إعدادًا واحدًا واختبره قبل الانتقال للتالي. بعض الوحدات مثل مركز الحماية والتأمين المتقدم تكون متوقفة افتراضيًا، ووجود الوحدة لا يعني أن كل خصائصها تعمل.
WooCommerce مطلوب لأدوات المتجر، وTeraWallet للمحفظة الجماعية، وLearnPress لوظائف الكورسات، وPMPro لأدوات العضويات الخاصة به. راجع «الإضافات المطلوبة» إذا اختفى قسم يعتمد على إضافة أخرى.
حفظ الإعدادات — الحفظ التلقائي وشريط الحفظ — 5.34.0
ابتداءً من 5.34.0 تُحفظ صفحات الإعدادات تلقائيًا بدون إعادة تحميل الصفحة. يظهر شريط الحفظ ثابتًا أسفل الشاشة بمجرد تعديل أي حقل، ويعرض الحالة: فيه تغييرات لسه ما اتحفظتش ثم بيحفظ… ثم اتحفظ ✓. موقعك في الصفحة والتبويب المفتوح لا يتغيران بعد الحفظ.
| الحالة | السلوك |
|---|---|
| حقل نصي | يُحفظ بعد توقف الكتابة بأقل من ثانية، أو فور الخروج من الحقل. |
| مفتاح أو قائمة | يُحفظ فور التغيير تقريبًا. |
| مفتاح «حفظ تلقائي» في الشريط | إيقافه يعيد أزرار الحفظ داخل الصفحة، ويبقى الحفظ بضغطة واحدة وبدون إعادة تحميل. الاختيار محفوظ في المتصفح لكل جهاز على حدة. |
| زر «تراجع» | يعيد قيم الصفحة كما كانت عند فتحها ثم يحفظها. |
| Ctrl+S أو ⌘+S | حفظ فوري دون انتظار. |
| إغلاق الصفحة أثناء تعديل لم يُرسل بعد | يكمل المتصفح إرساله، ويظهر تحذير مغادرة إذا كان الحفظ التلقائي متوقفًا أو فشلت آخر محاولة. |
يُرسل نموذج الصفحة كاملًا في كل حفظ، تمامًا كما يفعل زر الحفظ العادي، فتعمل قواعد التنقية المرتبطة بالتبويب كما هي، ولا يمسح حفظ تبويبٍ إعداداتِ التبويبات الأخرى. الحفظ يتطلب صلاحية manage_options ورمز أمان صالحًا، ويمر على دوال التنقية المسجّلة نفسها.
سجل النشاط: كل تغيير فعلي في الإعدادات يُسجَّل كالمعتاد. لأن الحفظ صار يتكرر أثناء التعديل، توقّع أسطرًا أكثر في السجل لجلسة تعديل واحدة مقارنة بالإصدارات السابقة.
صفحات لا يشملها الحفظ التلقائي: نماذج التنفيذ ذات الأثر المباشر (إرسال رسالة اختبار، حظر عنوان، حذف سجل، تثبيت إضافة) تبقى بزر تنفيذ صريح.
قفل الدخول والتحقق بخطوتين
- فعّل مركز الحماية من الوحدات، ثم راجع إعدادات محاولات الدخول والقوائم البيضاء والسوداء.
- اضبط عدد المحاولات وفترة القفل تدريجيًا، واختبر بحساب تجريبي من اتصال مختلف عن حساب المدير.
- إذا غيّرت رابط الدخول، احفظ الرابط الجديد واختبره في نافذة مستقلة قبل إغلاق جلستك.
- جرّب إرسال البريد قبل فرض كود التحقق بالبريد. عند استخدام تطبيق TOTP، أكمل الربط وتحقق من الوقت ثم احفظ أكواد الطوارئ في مكان آمن.
- طبّق التحقق على الأدوار المطلوبة فقط، وراجع تذكر الجهاز وأكواد الاستعادة قبل تعميمه.
راجع أثر فرض كلمات مرور قوية أو قفل استعادتها للمديرين على فريقك. القائمة البيضاء للـIP لا تناسب وحدها اتصالًا يتغير عنوانه باستمرار أو إعداد proxy غير مضبوط.
التأمين المتقدم وREST ورؤوس الأمان
فعّل كل قاعدة بعد تجربة الوظائف المرتبطة بها. تعطيل XML-RPC قد يؤثر على عملاء النشر أو خدمات تعتمد عليه، وقفل REST بالكامل قد يؤثر على المحرر وتكاملات المتجر والتطبيقات؛ استخدم قائمة المسارات المسموح بها عند الحاجة.
- منع تعداد المستخدمين: يقلل كشف الحسابات من المسارات المعروفة؛ اختبر صفحات المؤلف والتكاملات المطلوبة.
- منع تعديل الملفات: يغلق محرر الملفات في الإدارة، ولا يمنع تحديث الإضافات بالطريقة المعتادة.
- HSTS: فعّله بعد التأكد من صلاحية HTTPS للنطاقات المعنية؛ تأثير المتصفح قد يستمر بعد إلغاء الإعداد.
- X-Frame-Options: راجع أي تضمين شرعي لموقعك داخل موقع آخر.
- nosniff وReferrer-Policy وPermissions-Policy: اختبر تحميل الملفات والكاميرا والميكروفون والتكاملات بعد تعديلها.
لو لديك CDN أو إضافة أخرى تضبط نفس الرؤوس، راجع الاستجابة الفعلية لتجنب سياسات متضاربة.
السجلات وفحص سلامة الملفات
من «السجلات والمراقبة» حدّد الفترة ونوع النشاط لتتبع الدخول وتغييرات المحتوى والإضافات والمستخدمين. قرّب وقت البحث من وقت المشكلة بدل مراجعة السجل كله.
- ابدأ فحص سلامة الملفات من مركز الحماية.
- راجع مقارنة ملفات نواة ووردبريس، وخط الأساس للإضافات والقوالب، وأي PHP في مجلد الرفع.
- تحقق من مصدر التغيير: تحديث معروف، تعديل مخصص، أو ملف غير متوقع.
- أنشئ خط أساس جديد فقط بعد التأكد من سلامة الملفات الحالية. لا تعتبر الفحص وحده إثباتًا أن الموقع خالٍ من كل اختراق.
حماية المحتوى والفيديو وكشف الكونسول
اضبط نطاق الحماية على صفحات أو كورسات محددة أولًا، واختبر فيديو فعليًا بحساب طالب على الموبايل وسطح المكتب. توكنات الفيديو وبوابة الوصول تربط التشغيل بالسياسة، أما رصد أدوات المطور وحجب الاختصارات فهي وسائل ردع قد تنتج عنها حالات اكتشاف خاطئ.
عند فرض Xvast اختر النطاق والاستثناءات ورسالة التحويل، وقرر هل يُسجّل خروج المستخدم عند التحويل. جرّب الوصول من المتصفح المطلوب قبل تعميم القاعدة. إذا اخترت الدروس الداخلية فقط، اختبر صفحة الكورس والدرس كلًا على حدة.
منع لقطة الشاشة على الويب أفضل جهد وليس ضمانًا. تفعيل الخيار داخل PWA لا يحوّل الموقع إلى نظام DRM ولا يمنع كاميرا خارجية أو كل أدوات التسجيل.
الأجهزة والجلسات
من الأدوات الإضافية فعّل التحكم في الجلسات وحدّد أقصى عدد أجهزة؛ القيمة صفر تعني بدون حد في هذه الوحدة. اختر «إغلاق الأقدم» أو «منع الجديد»، وحدّد مدة الجلسة واستثناء المديرين إن لزم.
- سجّل الدخول بحساب تجربة من متصفحين مستقلين.
- تجاوز الحد من جهاز ثالث وتحقق من تطبيق السياسة والرسالة.
- راجع تسجيل الخروج الأسبوعي واليوم والوقت قبل تشغيله، لأنه يقطع جلسات المستخدمين عند موعده.
إذا شغّلت إضافة البث أيضًا، راجع الحدين: حد جلسات دخول الموقع وحد حضور البث. كل واحد يطبق على نطاق مختلف.
إعداد البريد وخوادم SMTP المتعددة — 5.33.0
- افتح «إرسال البريد SMTP»، واختر PHP Mail أو خادم SMTP واحد أو خوادم متعددة. PHP Mail هو الافتراضي للتثبيت الجديد، والإعداد السابق يُحافَظ عليه عند الترقية.
- لكل خادم أدخل اسمًا تعريفيًا، المضيف، المنفذ، نوع التشفير، بيانات المصادقة وبريد واسم المرسل. استخدم القيم التي يوفرها مزود بريدك.
- يمكن إضافة حتى 10 خوادم. الرقم الأصغر في الأولوية يعني تفضيلًا أعلى. اترك كلمة المرور فارغة للاحتفاظ بالمحفوظة؛ خيار المسح يزيلها صراحة.
- اختر التوزيع: حسب الأولوية، بالتتابع، أو عشوائيًا. ثم اختر المتاحة، التي نجح فحصها فقط، أو كل المفعّلة.
- احفظ وشغّل فحص كل خادم ثم أرسل رسالة اختبار فعلية وراجع سجلها وصندوق البريد.
فلتر «المتاحة» يستبعد المتعطل مؤقتًا لمدة 5 دقائق. «التي نجح فحصها فقط» قد يستبعد خادمًا لم يُفحص بعد. الفحص يتحقق من الاتصال والمصادقة، وقبول الإرسال لا يضمن وصول الرسالة إلى الوارد.
يمكن الرجوع إلى PHP Mail عند تعذر الاتصال بكل الخوادم قبل إرسال المحتوى. لا يعاد إرسال المحتوى على خادم آخر بعد بدء إرساله لتقليل التكرار؛ راجع السجل عند نتيجة غير مؤكدة. ثوابت SMTP في wp-config.php لها أولوية عند اختيار SMTP، فلا تتجاهلها إذا لم تنطبق قيم الشاشة.
اختبر بعد التغيير رسائل استعادة كلمة المرور والطلبات والتنبيهات. السجل يوضح حالة الرسائل ومحاولات الخوادم، ولا ينبغي مشاركة كلمات المرور أو محتوى الرسائل مع تقرير الدعم.
التعافي من الأخطاء الحرجة — 5.33.0
ميزة تعطيل الإضافة المتسببة في خطأ PHP قاتل مغلقة افتراضيًا. راجع خيارها داخل إعدادات الحماية/كشف الكونسول ومساعد الإنقاذ قبل تفعيلها، وجرّبها على نسخة اختبار من موقعك.
- تتعامل مع مصدر خطأ مؤكد في إضافة، ولا تعطل كل إضافات الموقع.
- التحذير أو الاستثناء المعالج أو فشل البريد لا يؤدي إلى التعطيل.
- تُستثنى حالات نفاد الذاكرة والمهلة والمصدر غير المؤكد وإضافات الشبكة من التعطيل الآلي.
- يُسجّل الحدث ويُجدول إشعار بريد مؤجل بعنوان قابل للتخصيص مع حد إعادة محاولة ومنع التكرار.
بعد واقعة تعطيل: راجع اسم الإضافة ورسالة الخطأ والتوقيت، أصلح السبب على نسخة تجريبية، ثم أعد تفعيل الإضافة واختبر الوظيفة المتأثرة. قد يؤدي تعطيل إضافة متجر أو دفع إلى توقف وظيفتها رغم عودة الموقع، لذلك راجع طلبات العملاء بعد التعافي.
إذا تعذر الدخول، استخدم وسيلة الاسترداد المهيأة لديك أو استعن بإدارة الاستضافة للوصول إلى الملفات واستعادة النسخة الاحتياطية. لا تُنشئ ملفات تجاوز عامة أو تترك استثناءات إنقاذ مفتوحة بعد الإصلاح.
المتجر والمحفظة والعضويات
من مركز الحماية اضبط حدود محاولات الدفع وتخمين الكوبونات وقواعد عرض الطلب والتنزيلات. اختبر عملية شراء صحيحة مع كل وسيلة دفع نشطة بعد تطبيق الحدود، خصوصًا إشعارات الدفع الواردة من المزود.
من «إدارة المتجر» و«الأدوات الإضافية» شغّل فقط الأدوات المطلوبة: تفريغ السلة عند إضافة منتج، حذف عنصر في الدفع أو إكمال الطلبات تلقائيًا. الإكمال التلقائي يغير دورة الطلب؛ جرّبه مع المنتجات وطريقة الدفع التي تستخدمها.
المحفظة الجماعية تحتاج TeraWallet. راجع قائمة المستفيدين والمبلغ واتجاه إضافة/خصم قبل التنفيذ، ثم تحقق من رصيد حساب تجريبي وسجل الحركة. أدوات PMPro تظهر فائدتها مع الإضافة المعنية: اختبر مزامنة الدور والتحويلات بعد تغيير مستوى العضوية.
الفيديوهات والدروس والمرفقات
وحدة «الفيديوهات والدروس» تعتمد على إضافات المحتوى المبيّنة في «الإضافات المطلوبة». راجع درسًا نموذجيًا قبل تشغيل الاستيراد على دفعة كبيرة.
- في أداة استيراد فيديوهات الدروس راجع الروابط المستخرجة من iframe داخل المحتوى والحقول المستهدفة.
- نفّذ على عينة صغيرة، ثم افتح الدرس كطالب وتحقق من التشغيل وحفظ المحتوى.
- استخدم التراجع الخاص بالأداة إذا كانت النتيجة غير مناسبة، مع الاحتفاظ بنسخة قاعدة البيانات.
من الأدوات الإضافية يمكنك تفعيل مرفقات PDF والعروض وGoogle Drive وتخصيص النص والأيقونة أو الارتفاع. السماح بفتح ملف من Google Drive أو مصدر خارجي يعتمد أيضًا على صلاحيات ذلك المصدر.
PWA وتحت الإنشاء والأدوات الإضافية
لتطبيق PWA: فعّل الوحدة، حدّد اسم التطبيق والأيقونتين 192 و512 وألوان الواجهة ورابط البداية ونمط العرض. افتح الموقع عبر HTTPS وجرّب التثبيت. يمكن وضع [pwa_install] في صفحة لإظهار زر التثبيت وفق الإعدادات.
عند فرض التثبيت، راجع نطاق الأجهزة والمستخدمين واستثناء المديرين ونص التعليمات. لا تفعّل كاش المحتوى الحساس دون اختبار صفحات الحساب والطلبات والدروس للمستخدمين المختلفين.
«تحت الإنشاء» يخصص واجهة الصيانة ومحتواها؛ عاين كزائر غير مسجل وتأكد من استمرار وصول فريق الإدارة. المحرر الكلاسيكي والهوني بوت وطلب استكمال البيانات أدوات اختيارية؛ عند طلب تحديث البيانات تأكد أن صفحة الوجهة متاحة للمستخدم حتى لا يقع في حلقة تحويل.
حل المشاكل واختبار التشغيل
| العَرَض | الخطوة العملية |
|---|---|
| قسم غير ظاهر | راجع مفتاح الوحدة والترخيص والإضافة المطلوبة. |
| مستخدم يُطرد أو يُحوّل | راجع حد الأجهزة وXvast وفرض PWA والتحويلات وموعد الخروج الأسبوعي. |
| تعطل المحرر أو تكامل | راجع قواعد REST والرؤوس والقوائم المسموح بها؛ جرّب تعطيل القاعدة الجديدة فقط على نسخة الاختبار. |
| رسائل لا تصل | راجع طريقة الإرسال والثوابت وفحص الخادم وسجل المحاولة وصندوق الرسائل غير المرغوبة. |
| شريط الحفظ يقول «الصفحة قعدت مفتوحة كتير» | انتهت صلاحية رمز الأمان بعد بقاء الصفحة مفتوحة طويلًا. حدّث الصفحة وأعد التعديل؛ يوقف النظام الحفظ التلقائي عند هذه الحالة بدل تكرار المحاولة. |
| شريط الحفظ يقول «الحفظ ما نجحش» | راجع الاتصال ثم اضغط «احفظ دلوقتي». إذا تكرر، راجع سجل الأخطاء وقواعد الجدار أو إضافات الأمان التي قد تحجب admin-ajax.php. |
| لا يظهر شريط الحفظ ولا تُحفظ التعديلات | الجافاسكريبت محجوب أو معطّل؛ تعود أزرار الحفظ داخل الصفحة وتعمل كالمعتاد. راجع كونسول المتصفح وإضافات حجب النصوص البرمجية. |
| أسطر كثيرة في سجل النشاط بعد جلسة إعدادات | سلوك متوقع منذ 5.34.0: الحفظ يتكرر أثناء التعديل فيُسجَّل كل تغيير فعلي. أوقف «حفظ تلقائي» من الشريط إذا كنت تفضّل حفظة واحدة. |
| إضافة تعطلت تلقائيًا | راجع سجل الخطأ وسبب التعطيل قبل إعادة تشغيلها؛ فشل البريد ليس سبب تعطيل. |
التفعيل مرفوض: تأكد أن الكود يخص نفس الإضافة، وأنه لم ينتهِ أو يتجاوز عدد المواقع، وأن عنوان الموقع هو الدومين المسجّل. بعد نقل الدومين راجع التفعيل، ولا تنسخ بيانات ترخيص مشفّرة من قاعدة موقع آخر.
التحديث لا يظهر: افتح شاشة الترخيص وأعد الفحص، ثم صفحة تحديثات ووردبريس. راجع اتصال الخادم بمركز MirrorORG وتوقيت الخادم وسجل الخطأ، وأرسل للدعم اسم الإضافة ورقم النسخة ورسالة الخطأ بدون كود التفعيل أو كلمات المرور.
بعد التحديث: اختبر دخول المدير والعميل، التحقق الثنائي، درس فيديو، الدفع والكوبون، إرسال البريد، تثبيت PWA إن كان مستخدمًا، ثم راجع السجلات.
التحديث والنسخ الاحتياطي
- راجع رقم الإصدار وسجل التغييرات في أسفل الدليل قبل التحديث.
- خذ نسخة احتياطية من قاعدة البيانات والملفات، ودوّن إعداداتك المهمة. نفّذ التحديث من صفحة إضافات ووردبريس بعد التأكد من صلاحية الترخيص.
- امسح كاش الصفحات والملفات الثابتة عند الحاجة، ثم نفّذ سيناريو الاختبار الموجود بهذا الدليل.
- إذا ظهر تعارض، أعد الاختبار على النسخة التجريبية. الرجوع لحزمة أقدم وحده لا يرجع تغييرات قاعدة البيانات؛ استخدم نسخة احتياطية متوافقة عند اللزوم.
الترقية إلى 5.34.0: لا تحتاج أي إجراء ولا تتغير أي قيمة محفوظة. بعد التحديث افتح صفحة إعدادات، غيّر حقلًا، وتأكد من ظهور شريط الحفظ أسفل الشاشة وانتهائه إلى «اتحفظ ✓» دون إعادة تحميل. من يفضّل الحفظ بزر يوقف مفتاح «حفظ تلقائي» من الشريط نفسه.
الدليل معنون برقم النسخة التي تمت مراجعتها. يُعرض سجل الإصدارات من الـHub مباشرة، وتُحفظ الأدلة القديمة عند نشر نسخة جديدة. الإعدادات والسلوك الجديد يحتاجان مراجعة تحريرية ضمن الإصدار؛ تغيير رقم النسخة وحده لا يكفي.
سجل الإصدارات
هذه التغييرات مأخوذة مباشرة من الإصدارات المنشورة على الـHub.
5.34.1 · 2026-09-19 · الإصدار الحالي
5.34.1 — تصحيح إنذار كاذب في رصد أدوات المطور
- تكبير أو تصغير الصفحة (زوم المتصفح) كان يُظهر شاشة «تنبيه أمني» للزائر على الكمبيوتر بدون أي محاولة فحص. السبب أن الكاشف يقارن فرق أبعاد النافذة بخط أساس ثابت، والزوم يغيّر أبعاد المحتوى الداخلية وحدها بينما يبقى قياس النافذة الخارجي كما هو، فيتجاوز الفرق عتبة التنبيه.
- صار الرصد يميّز الزوم: يغيّر الزوم العرض والارتفاع بالنسبة نفسها بينما تقضم أدوات المطور المرصوصة بُعدًا واحدًا (يمين = العرض، أسفل = الارتفاع). عند كل تغيير زوم يُعاد ضبط خط الأساس مع فترة سماح قصيرة لحد ما التخطيط يستقر.
- التمييز يعمل على كل المتصفحات: يعتمد على نسبة الزوم المعلنة وعلى تناسب البُعدين معًا، لأن سفاري لا يغيّر نسبة الزوم المعلنة عند التكبير.
- أُضيف شرط قراءتين متتاليتين قبل إطلاق التنبيه — كما في كاشف التوقيت — حتى لا تُحسب طفرة لحظية أثناء سحب حجم النافذة.
- لم يتغيّر الكشف الحقيقي: فتح أدوات المطور مرصوصة يُرصد كالسابق حتى مع وجود زوم، وكاشف توقيت الكونسول ورصد Eruda واختصارات لوحة المفاتيح كما هي. الهواتف كانت ولا تزال مستثناة من كاشف الأبعاد.
- ترقية موصى بها لكل موقع يفعّل «كشف الكونسول»: قبلها كان الزائر الذي يكبّر الصفحة لضعف النظر يُحجب عن المحتوى ويُسجَّل في سجل المحاولات.
- مراجعة التوثيق: حُدِّث قسم «حماية المحتوى والفيديو وكشف الكونسول» بما يُطلق التنبيه فعلًا وما لا يُطلقه، وأُضيف سطر مطابق في جدول حل المشاكل.
5.34.0 · 2026-09-06
5.34.0 — الحفظ التلقائي لإعدادات اللوحة
- كل صفحات الإعدادات تُحفظ تلقائيًا بدون إعادة تحميل الصفحة: الحقول النصية بعد توقف الكتابة بأقل من ثانية أو عند الخروج من الحقل، والمفاتيح والقوائم فور التغيير. موقعك في الصفحة والتبويب المفتوح لا يتغيران.
- شريط حفظ ثابت أسفل الشاشة يظهر عند أول تعديل ويعرض الحالة حتى «اتحفظ»، مع زر حفظ فوري وزر تراجع يعيد قيم الصفحة كما فُتحت، واختصار Ctrl+S.
- مفتاح «حفظ تلقائي» داخل الشريط لإيقافه لكل جهاز على حدة؛ عند إيقافه تعود أزرار الحفظ داخل الصفحة ويبقى الحفظ بدون إعادة تحميل.
- يُرسل النموذج كاملًا في كل حفظ عبر نقطة تعمل بنفس خطوات options.php: بوابة الإعدادات المسجّلة، ودوال التنقية نفسها، وصلاحية manage_options ورمز أمان يتجدد مع كل حفظ. حفظ تبويب لا يمسح إعدادات التبويبات الأخرى.
- التعديل الذي لم يُرسل بعد يكتمل إرساله عند إغلاق الصفحة، ويظهر تحذير مغادرة عند إيقاف الحفظ التلقائي أو فشل آخر محاولة.
- تحذيرات دوال التنقية تظهر في الشريط بدل ضياعها مع إعادة التحميل. نماذج التنفيذ ذات الأثر المباشر تبقى بزر صريح.
- ملاحظة تشغيلية: تغييرات الإعدادات تُسجَّل في سجل النشاط كالمعتاد، ولأن الحفظ صار متكررًا أثناء التعديل توقّع أسطرًا أكثر لجلسة التعديل الواحدة.
5.33.0 · 2026-09-05
5.33.0 — التعافي من الأخطاء الحرجة والبريد المتعدد
- خيار لتعطيل الإضافة المتسببة في خطأ PHP قاتل فقط، مع مساعد إنقاذ مبكر مستقل. التحذيرات والاستثناءات المعالجة وفشل البريد لا تؤدي للتعطيل.
- سجل لوقائع التعطيل وإشعار بريد مؤجل بعنوان قابل للتخصيص، مع منع تكرار الرسالة وحد أقصى لإعادة المحاولة.
- استبعاد نفاد الذاكرة والمهلة والمصادر غير المؤكدة وإضافات الشبكة من التعطيل التلقائي. الخيار مغلق افتراضيًا.
- حتى عشرة خوادم SMTP، واختيار حسب الأولوية أو بالتتابع أو عشوائيًا، مع فحص الاتصال والتوثيق وتصفية الخوادم حسب حالتها.
- تشفير كلمات المرور والتحقق من TLS، واستبعاد الخادم المتعطل مؤقتًا، والانتقال لخادم بديل قبل إرسال محتوى الرسالة فقط لتجنب التكرار.
- PHP Mail افتراضي للإعدادات الجديدة مع الحفاظ على إعداد SMTP السابق، وخيار الرجوع إلى PHP عند تعذر الاتصال بخوادم المجموعة.
- سجل لحالة الرسائل ومحاولات الاتصال والخادم المستخدم وأخطاء منقحة بدون كلمات مرور أو محتوى الرسائل.
5.32.0 · 2026-09-05
5.32.0 — تشخيص الأعطال وتعافٍ أكثر أمانًا
- تسجيل مبكر للأخطاء الحرجة مع نوع الخطأ والملف والسطر، بدون محتوى الطلب أو المفاتيح. تمت تجربة أخطاء التشغيل والنحو ونفاد الذاكرة.
- التعافي الاختياري يمنع إعادة تحميل ملف الوحدة المعزولة في الطلب التالي حتى بدون الوضع الخفيف. لا يعطل ضوابط الدخول أو الجدار الناري تلقائيًا ولا يعزل مكونًا عشوائيًا عند نفاد الذاكرة.
- مساعد إنقاذ مستقل محدّث: تأكيد POST ومفتاح أحادي الاستخدام، وتطابق دقيق لاسم السويت. لا يعطل إضافات الشبكة عبر مفتاح موقع فرعي.
- إزالة سجل الإنقاذ المكشوف عند ترقية المساعد، ونقل التشخيص إلى سجل محدود داخل إعدادات ووردبريس.
- إغلاق تزوير IP عبر الهيدرات في الحماية وقوائم السماح والتحقق من الشهادات. X-Forwarded-For يقبل فقط من بروكسي محدد في الإعدادات؛ الافتراضي هو عنوان الاتصال المباشر.
- فصل إخفاء IP في سجل النشاط عن هوية قرارات الحظر والسماح حتى لا تختلط هويات الزوّار.
- لوحة لتشخيص الأخطاء وتنبيه عند عزل وحدة. لا توجد ضمانة لمنع جميع الأعطال ولا تتم إعادة طلبات الدفع أو الحفظ الفاشلة تلقائيًا.
5.31.1 · 2026-09-05
إصلاحات أمان واستقرار 5.31.1
- منع تزوير هوية المستخدم في سجل الكونسول وإخفاء تفاصيل أخطاء قاعدة البيانات.
- إصلاح رابط تسجيل الأحداث للمواقع المثبتة داخل مجلد فرعي ودعم توثيق REST.
- معرّفات عشوائية مستقلة للنسخ الاحتياطية ومنع تصادم النسخ المتزامنة في نفس الثانية.
- إصلاح الرجوع عند الاحتفاظ بنسخة واحدة، مع إبقاء نسخة الأمان أثناء العملية.
- رفض الروابط الرمزية والمسارات غير الصالحة في الأرشفة والاسترجاع، والتحقق من أخطاء كتابة الأرشيف وملفات الحماية.
- رفض حزم التحديث متعددة المجلدات الرئيسية.
5.31.0 · 2026-09-05
↩️ جديد: تبويب «الرجوع والتجربة» — التأمين على التحديث التلقائي
- السويت بتحدّث نفسها لوحدها. ده أحسن حاجة للأمان — الترقيع بيوصل في ثواني بدل أسابيع — وأخطر حاجة في نفس الوقت: إصدار واحد فيه باج بيتثبّت من غير ما حد يدوس زرار. التبويب الجديد هو التأمين على القرار ده.
📦 نسخة قبل كل تحديث، ورجوع بضغطة
- قبل أي تحديث بتتاخد نسخة كاملة من مجلد الإضافة — في آخر لحظة الملفات القديمة لسه موجودة فيها.
- الرجوع بضغطة من لوحة التحكم: من غير FTP ومن غير ما تكلّم الاستضافة.
- والرجوع نفسه ليه رجوع — بياخد نسخة من الوضع الحالي قبل ما يلمسه. وبيبدّل المجلدات بإعادة تسمية مش بمسح-وكتابة، فلو حاجة وقعت في النص المجلد القديم لسه مكانه كامل بدل ما الموقع يفضل بنص إضافة.
- النسخ متخزّنة في
uploads/mirror-rollback/ومقفولة من الويب — النسخة دي مجلد إضافة كامل وممكن يكون جواه مفاتيح، فلو اتسابت مكشوفة تبقى أسوأ من إنها مش موجودة. وبتتمسح بالكامل لو شيلت الإضافة وطلبت المسح.
🧪 جرّب التحديث قبل ما يتثبّت
- الحزمة الجاية بتتنزّل وتتفحص في مجلد مؤقت، من غير ما تلمس الإضافة الشغّالة: فحص نحوي لكل ملف PHP، ومقارنة الهيدر بإصدار PHP وووردبريس عندك، وكشف تضارب أسماء الدوال (أشهر سبب لـ«الموقع وقع بعد التحديث»).
- الفحص ده بيشتغل كمان تلقائيًا وقت التثبيت الحقيقي — نفس الكود، فمافيش فحص بيقول تمام وبوابة بتقول حاجة تانية.
- الافتراضي إنه بيفحص ويسجّل بس. المنع مفتاح منفصل ومطفي عن قصد: إضافة حماية بتمنع ترقيع أمني بسبب فحص عندها هي ممكن تبقى أخطر من التحديث نفسه.
🔧 ملاحظة تقنية
execمقفولة على أغلب الاستضافات المشتركة يعني مافيشphp -l. الفحص النحوي بيستعمل محلّل PHP نفسه عن طريقTOKEN_PARSE: بيقرا الملف ويرمي خطأ لو مكسور، من غير ما ينفّذ سطر واحد منه.- الوحدة مطفية افتراضيًا، والنسخ بتغطّي السويت بس ما لم تختار «كل الإضافات» — أرشفة كل إضافة على استضافة مشتركة بتاكل مساحة وinodes.
5.30.0 · 2026-09-05
🧠 جديد: تبويب «القرار والتعلّم»
- الإصدار اللي فات ضاف مساعد بيقرا ويشرح. ده بيضيف حاجة مختلفة: ذاكرة. السويت بقت تفتكر قراراتك، وتبني خط أساس لسلوك الموقع، وتقترح تغييرات مكتوبة.
- مافيش حاجة بتتطبّق لوحدها. كل اقتراح ليه سبب مكتوب، وبيتفحص بكود مش بثقة، وجنب زرار القبول زرار رفض — واللي بيتطبّق ليه رجوع بضغطة.
📈 كشف الشذوذ — بيشتغل من غير إنترنت
- الكشف إحصاء محلي من سجل النشاط: بيقارن اليوم بخط أساس مبني على آخر أسبوعين، والنتيجة بتتسجّل في شاشة «🛰️ المراقبة» مش في شاشة جديدة.
- الحساب بالـوسيط مش المتوسط عن قصد: يوم واحد فيه ٥٠٠ محاولة دخول بيرفع المتوسط لدرجة إن أي هجوم بعده يبقى «طبيعي». الوسيط مابيتأثرش بالقيمة الشاذة.
- النموذج بيتنده عشان يشرح النتيجة لما تطلب — مش عشان يوصلها. يعني الوحدة شغّالة في الوضع السيادي ومن غير أي نداء.
💡 اقتراحات بتتفحص قبل ما توصلك
- قاعدة حجب من نمط هجوم: الناتج بيعدّي على تلات بوابات — شكل صحيح، تعبير نمطي صالح، ومش واسع. أي نمط بيمسك الصفحة الرئيسية أو أقصر من أربع حروف بيترفض قبل ما تشوفه أصلًا.
- إعدادات على مقاس الموقع: مبنية على حقايق موقعك (متجر؟ كام مدير؟ التسجيل مفتوح؟) وعلى الفحوصات الراسبة في «درجة الأمان». والمفاتيح اللي ينفع تتقترح قايمة بيضا محدودة — أي حاجة ممكن تقفلك بره موقعك مش فيها أصلًا.
- مراجعة كود لملفات القوالب والإضافات (جوّه wp-content بس، PHP وJS بس).
- تحليل اللقطات: بياخد الفرق عن لقطة الأساس ويرتّبه — إيه اللي يستاهل قلق وإيه اللي شكله تحديث عادي.
📚 بيتعلّم من قراراتك
- كل نتيجة بتعتمدها أو تقفلها بتتسجّل، والمساعد بيقراها قبل ما يرد عليك في المرة الجاية — عشان مايكرّرش تحذير إنت قفلته قبل كده من غير سبب جديد.
- الوحدة كلها مطفية افتراضيًا، والتسجيل ده بيانات محلية مابتسيبش الموقع.
5.29.0 · 2026-09-05
🤖 جديد: المساعد الذكي — بيشرح النتيجة بدل ما يسيبك قدامها
- السويت بتكتشف حاجات كتير، وصاحب الموقع بيقف قدام النتيجة ومايعرفش يقرر. التبويب الجديد «🤖 المساعد الذكي» بياخد السياق اللي اتجمع أصلًا ويرجّعه بعربي مفهوم.
- زرار «اشرحلي» جنب النتيجة نفسها — في شاشة المراقبة وجنب كل مقتطف كود مشبوه في سجل حارس الحقن. الرد بيظهر تحت النتيجة من غير ما تسيب الشاشة.
- شرح الكود المشبوه: الكود ده بيعمل إيه، هو خطر فعلًا ولا إنذار كاذب، وتعمل إيه.
- تلخيص السجل اليومي: مئات الصفوف بتتحوّل لملخّص سطرين، اختياري كل يوم مع المهمة اليومية، وممكن يتبعت بالإيميل.
- شرح الحادثة للعميل: نص جاهز يتبعت — إيه اللي حصل وهل بياناته اتأثرت — من غير أسماء ملفات ولا مصطلحات.
- ترجمة التقارير للفصحى أو الإنجليزي، من غير ما تتغيّر أي أرقام أو تواريخ.
📍 القرار الأهم: النموذج بيشتغل فين
- تقدر تختار نموذج على نفس السيرفر (Ollama أو llama.cpp) — ومافيش بايت واحد بيسيب الجهاز — أو بول mersal أو أي خدمة متوافقة مع OpenAI.
- الوضع السيادي بقى يفرّق بين الاتنين: بيمنع النموذج البرّاني، وبيسيب اللي على نفس السيرفر يشتغل عادي — الطلب اللي مابيسيبش الجهاز مش خرق للسيادة.
- شاشة صريحة بتقول إيه اللي بيتبعت: تنقية بتشيل الإيميلات وعناوين الـIP والمفاتيح والمسار الكامل قبل أي إرسال، وقفل مستقل لإرسال مقتطفات الكود.
- سقف نداءات يومي وكاش للردود وسجل بكل نداء اتبعت — الوحدة مابتشتغلش لوحدها ومابتفاجئكش بفاتورة.
🔒 ملاحظات
- الوحدة كلها مطفية افتراضيًا، ومكان التشغيل مطفي كمان — مافيش أي نداء بيحصل غير بعد ما تشغّلها وتختار مكان بإيدك.
- كل زرار بيشتغل لما تدوس عليه بس: مافيش تحليل تلقائي في الخلفية، ومافيش قرار بيتاخد لوحده.
5.28.0 · 2026-09-05
📡 إصلاح مهم: الموقع كان ممكن يقطع نفسه عن مركز التحديثات
- لما يتفعّل إعداد «أوقف REST للزوّار»، كان بيقفل كمان قناة الإضافة مع مركز MirrorORG — فالموقع يبطّل يستقبل التحديثات ويبطّل يبلّغ حالته، من غير أي رسالة خطأ.
- النتيجة إن الموقع ممكن يفضل على نسخة قديمة فيها ثغرة من غير ما حد ياخد باله.
- دلوقتي مسارات المركز التلاتة بتفضل شغّالة مهما كان ضبط REST. أمانها مالوش دعوة بالإعداد ده أصلًا: كل طلب منها بيتحقق من توقيع مشفّر على مفتاح الترخيص، والمفتاح مابيتنقلش في الطلب، وأي طلب أقدم من خمس دقايق بيترفض.
- القفل نفسه مااتغيّرش لأي مسار تاني: كل باقي مسارات REST بتفضل مقفولة على الزوّار زي ما ضبطتها.
🛡️ حماية من تكرار عطل التحميل
- إضافة فحص تلقائي بيتأكد إن الكود اللي بيشتغل وقت تحميل الإضافة مابيستعملش دوال ووردبريس اللي لسه ماتحمّلتش — نفس النوع اللي وقّع موقع قبل كده.
5.27.0 · 2026-09-05
🧭 تنظيم الأدوات وتجربة تنقّل جديدة
- استبدال شريط التنقّل الأفقي بسايدبار ثابت وواضح بدون سكرول أفقي.
- دمج الأدوات في خمس مجموعات منطقية: الرئيسية، الحماية، أدوات الموقع، المتجر والمحتوى، والنظام.
- بحث موحّد يصل إلى صفحات الإضافة وإعدادات الصفحة الحالية من نفس المكان.
- دعم كلمات عربية وإنجليزية بديلة، نتائج سريعة، انتقال مباشر، وتنقّل كامل بالكيبورد.
- سايدبار متحرك للموبايل مع خلفية إغلاق، وتحسين شامل للوضع الداكن والاستجابة وسهولة الوصول.
5.26.1 · 2026-09-04
🛠️ إصلاح توافق عاجل بعد إعادة التصميم
- إصلاح تحميل وحدة قياس الأداء مبكرًا قبل إتاحة دالة WordPress العشوائية.
- منع خطأ 500 في الطلبات المبكرة وWP-CLI مع الإبقاء على قياس الأداء بالعينات.
- يتضمن إعادة التصميم الكاملة لواجهة الإضافة وخط Tajawal المحلي ولوحة التحكم الجديدة من 5.26.0.
5.26.0 · 2026-09-04
✨ إعادة تصميم كاملة للوحة MirrorORG Protection Suite
- هوية موحّدة لكل صفحات الإضافة: ترويسة وتنقّل وبطاقات ونماذج وجداول وتبويبات أوضح.
- اعتماد خط Tajawal محليًا داخل الإضافة بدون طلبات خارجية.
- لوحة تحكم جديدة بملخص جاهزية ونسبة تشغيل الموديولات تتحدث فورًا.
- بحث شامل داخل الصفحة، تنقّل مخصص للموبايل، تنبيه للتغييرات غير المحفوظة، واختصارات لوحة مفاتيح.
- تحسين الوضع الداكن والاستجابة وسهولة الوصول، مع الحفاظ على استوديو «تحت الإنشاء» وخلفياته والسوشيال.
- مبني فوق تطويرات الحماية في 5.25.0 بدون استبدال أو حذف ملفاتها.
5.25.0 · 2026-09-04
🚀 ست موجات جديدة: ٢٩ بند من خريطة المنتج
- ⚡ تبويب الأداء — قياس تكلفة كل وحدة بالمللي ثانية، وضع الموارد المحدودة، فحص على دفعات باستئناف، وقت هدوء، ضغط النسخ، تنضيف الجداول، وتقرير أثر الحماية على زمن الاستجابة (بقياس حيّ بالحماية وبدونها).
- 🔐 الدخول المتقدّم — مفاتيح المرور (Passkeys) بتحقق WebAuthn كامل محليًا، لينك سحري، كابتشا Turnstile، ودخول جوجل بتحقق توقيع محلي بلا أسرار مخزّنة.
- 🔭 الكشف من بره — لقطة أساس كاملة للموقع السليم مع مقارنة يومية، وفحص الصفحة الواصلة بتلات هويات (زائر/جوجل/موبايل) لكشف الحقن على مستوى السيرفر، وقواعد جدار مشتركة بالاستيراد والتصدير.
- 🚀 تبويب البداية — معالج إعداد بخمس أسئلة بيظبّط الموقع حسب نوعه، خط زمني للأحداث، إشعارات لوحة للحاجات الحرجة، وأمثلة حقيقية جنب كل مفتاح مهم.
- 🧰 للمطوّرين — مسارات REST موثّقة بصلاحية ووردبريس، خطّافات بتتولّد من الكود نفسه، حجب على حافة كلاودفلير، تكامل Sentry، وحزمة تشخيص بتشيل الأسرار.
- 🌍 اللغة والمنطقة — واجهة إنجليزية، نبرة فصحى للتقارير الرسمية، تاريخ هجري، أرقام عربية، وفحص توافق مع استضافات المنطقة.
- وقبلهم 🧪 سلامة الإضافة: وضع تشخيص بيطفّي الوحدات مؤقتًا، تعافٍ ذاتي من الأخطاء الفادحة، إضافة إنقاذ، وتحقق من بصمة حزمة التحديث قبل تثبيتها.
5.24.0 · 2026-09-04
🧪 تبويب جديد: سلامة الإضافة
- وضع التشخيص — يطفّي وحدات الحماية مؤقتًا (كلها أو واحدة) عشان تعرف في دقيقتين هي سبب المشكلة ولا لأ. الإعدادات المحفوظة مابتتغيّرش، والوضع بيقفل نفسه لوحده بعد المدة.
- التقاط الأخطاء الفادحة والتعافي الذاتي — أي فتال طالع من ملفات الإضافة بيتسجّل بالملف والسطر، ولو وحدة كرّرت الوقوع بتتطفّي لوحدها بدل ما الموقع يفضل واقع.
- إضافة الإنقاذ — ملف mu-plugin مستقل بيتركّب وهو نايم، وبيسيبلك رابط سري يطفّي السويت لو الموقع وقع ومافيش FTP.
- بصمة الحزمة — التحديث مابيتثبّتش إلا لو بصمة الملف المنزّل تطابق البصمة اللي المركز وقّع عليها.
- كشف الإضافات المتعارضة + security.txt معياري + فحص توافق مع نسخة PHP وووردبريس.
- الوضع الخفيف — اختياري: ماتحمّلش ملفات الوحدات المطفية من أصلها.
5.23.0 · 2026-09-04
📑 تبويب جديد: التقارير والامتثال
- سجل تدقيق مسلسل بالهاش — كل سطر بيشاور على اللي قبله، فأي حذف أو تعديل في السجل بيبان وقت التحقق حتى لو حصل من الداتابيز نفسها.
- مين شاف بيانات العملاء — فتح صفحة طلب أو ملف مستخدم بيتسجّل باسم مين ومن أي عنوان. ووردبريس مابيسجّلش القراءة أصلًا.
- تصدير لأنظمة SIEM — مسار سحب بمفتاح عشوائي بصيغة JSON Lines أو CEF أو CSV، مع استئناف من آخر رقم اتسحب.
- تقرير امتثال PCI — ١٥ بند متربوطين بإعدادات الموقع الفعلية، بصفحة قابلة للطباعة (مساعد تقييم ذاتي، مش شهادة).
- شهادة فحص قابلة للمشاركة — صفحة عامة بمفتاح فيها الدرجة وتاريخ آخر فحص ورقم تحقّق.
- لقطة حالة بصيغة آلة — عشان لوحة الأسطول تقارن المواقع ببعضها بنفس المقياس.
- الاحتفاظ بالسجل سنة افتراضيًا مع «ختم» عند التنضيف يخلّي التحقق يكمّل، وتحقق يومي بيبلّغ لو السلسلة اتكسرت.
5.22.0 · 2026-09-04
✨ إعادة تصميم كاملة لتجربة «تحت الإنشاء»
- استوديو إعداد جديد يقسم العمل إلى المحتوى والتصميم والسوشيال والجدولة والوصول.
- معاينة حيّة داخل اللوحة مع تبديل فوري بين الديسكتوب والموبايل.
- حالة تشغيل أو جدولة أو انتهاء واضحة، وتنبيه مرئي قبل نشر التغييرات غير المحفوظة.
- تحسين ترتيب الحقول، سهولة الوصول، الوضع الداكن، والاستجابة على الشاشات الصغيرة.
- إعادة تصميم صفحة الزائر بهرم بصري أوضح وعدّاد وأزرار وتفاعل أنظف.
5.21.0 · 2026-09-04
🎨 صفحة «تحت الإنشاء» أغنى وأسهل
- 5 خلفيات WebP أصلية جاهزة: زمردي، فجر مدينة، تقنية زرقاء، غروب دافئ، ومعماري داكن.
- خلفية مخصصة ودرجة تعتيم قابلة للتحكم لضمان وضوح النص.
- أيقونات وروابط Facebook وInstagram وX وYouTube وTikTok وWhatsApp.
- بطاقة واضحة في داشبورد الإضافة تعرض الحالة وتوفر تشغيل/إيقاف سريع وإعدادات مباشرة.
5.20.0 · 2026-09-04
🚧 صفحة «الموقع تحت الإنشاء» المستقلة
صفحة 503 جاهزة من داخل MirrorORG Protection من غير اشتراط WooCommerce، مع مفتاح تشغيل واضح ومعاينة آمنة قبل التفعيل.
- تخصيص العنوان والرسالة واللوجو وزر الإجراء والألوان.
- جدولة البداية والنهاية وعدّاد تنازلي تلقائي.
- استثناء المديرين وعناوين IP ومسارات محددة.
- لوحة التحكم والدخول وREST وCron والتحديثات تظل شغّالة.
- استجابة 503 صحيحة، Retry-After، منع الفهرسة ومنع الكاش.
5.19.1 · 2026-09-04
🐞 حزمة 5.19.0 كانت ناقصة ملف
حزمة 5.19.0 اتبنت من شجرة قبل ما وحدة بروتوكول الحادثة تتوصّل، فطلعت من غير incident-extra.php. الحزمة نفسها كانت سليمة ومااتكسرش عليها موقع — الملف الرئيسي فيها مش بيطلب الملف الناقص — بس زرار «الموقع مخترق» وتقرير الحادثة ووضع الصيانة مكانوش موجودين فيها.
5.19.1 هي نفس المحتوى المقصود كامل: الوحدة موجودة وموصّلة، والحزمة اتبنت من نفس الشجرة اللي عدّت الـ٥٤٩ اختبار بالظبط.
اللي في الإصدار ده كامل: بروتوكول الحادثة بضغطة (سبع خطوات بالترتيب الصح + جدولة إعادة الفحص بعد ساعة ويوم وأسبوع)، قائمة تحقق باللي محتاج إنسان، تقرير حادثة بجدول قبل/بعد، وضع صيانة بكود 503، والمراقبة الخارجية (التوفّر والقوايم السودا وSSL وتغيّر DNS).
5.19.0 · 2026-09-04
🌐 المراقبة من بره
كل الوحدات اللي قبل كده بتشتغل جوّه ووردبريس. وده معناه إنها كلها عمياء عن نوع كامل من المشاكل: الشهادة اللي هتنتهي بعد أسبوع، والـDNS اللي اتغيّر فجأة، والموقع اللي واقع أصلًا — لأن الكود اللي هيبلّغ واقع معاه.
- انتهاء شهادة SSL — الشهادة اللي بتنتهي فجأة بتوقّف المتجر بالكامل، والمتصفّح بيحط شاشة تحذير حمرا مكان الصفحة. والأسوأ إنها بتنتهي في اليوم اللي محدش متوقّعه. التنبيه قبلها بالمدة اللي تحددها (١٤ يوم افتراضيًا)، ويبقى حرج في آخر ٣ أيام.
- تغيّر سجلات DNS (حرج) — تغيّر في سجل A أو NS معناه استيلاء على الدومين، وده أخطر بكتير من اختراق الموقع: المهاجم بيبقى معاه الدومين نفسه، والموقع اللي عندك يفضل سليم ومالوش لازمة.
- التوفّر وزمن الاستجابة — الموقع الواقع مش مشكلة أمنية دايمًا، بس هو أول حاجة العميل بيلاحظها. والقياس بيتم من طلب حقيقي للصفحة — القياس من جوّه الموقع نفسه بيبقى بلا معنى. آخر ٦٠ قياس بتتحفظ.
📄 صفحة حالة عامة
لينك بيعرض آخر فحص: الشهادة، والاستجابة، وآخر فحص أمني. الفايدة العملية إن العميل بيفتحه ويطمّن بدل ما يتصل، والوكالة بتحطه في التوقيع.
الرابط بمفتاح عشوائي مش مسار ثابت: الصفحة بتقول معلومات عن الموقع، ومسار متوقّع معناه إن أي حد يقدر يقراها. والمفتاح الغلط بيخلّي الصفحة كأنها مش موجودة أصلًا — مافيش رسالة رفض تأكّد إن الصفحة قايمة.
الاختبارات
٥٠٨ اختبار ناجح (٢٨ جديدة). الاختبارات دي بتكلّم الشبكة فعلًا — بتقرا الشهادة الحقيقية وسجلات الـDNS الحقيقية وبتطلب الصفحة الرئيسية — وده مقصود: القياس من غير شبكة مش قياس. واللي مابيتلمسش: مافيش إعداد بيتغيّر ومافيش ملاحظة بتفضل مسجّلة بعد الاختبار.
5.18.0 · 2026-09-04
🩹 تبويب جديد: إدارة الترقيع
الحقيقة اللي الوحدة دي مبنية عليها: أغلب المواقع اللي بتتخترق بتتخترق بثغرة معلنة في إضافة نزل ليها تصليح من شهور. المهاجم مش بيكتشف حاجة — هو بيقرا سجل التغييرات ويدوّر على مواقع ماحدّثتش.
يعني السؤال المهم مش «فيه ثغرة؟» بل «إيه اللي متأخّر عندي، وليه؟».
الأربع إجابات
- الإضافات المهجورة — إضافة ماتحدّثتش من سنتين. دي أخطر من الإضافة القديمة: لما تتعلن ثغرتها مافيش حد هيصلّحها.
- الإضافات المكركة (حرج) — النسخ المكركة أكبر مصدر أبواب خلفية في مواقع المنطقة. الكشف بمقارنة ملفات الإضافة ببصمات المستودع الرسمي. الفحص غالي (تنزيل ومقارنة)، فبيعمل إضافة واحدة كل يوم بالتناوب — أسبوع وتبقى كلها اتفحصت من غير ما اليوم الواحد يحمّل السيرفر.
- جدول حالة كل إضافة — النسخة المثبتة والمتاحة وآخر تحديث للإضافة نفسها، مرتّب بالخطورة مش بالاسم عشان أول سطر تشوفه يكون أهم واحد. والمتوقّفة خطورتها بتتقسم على تلاتة: سطح هجوم أقل، بس ملفاتها لسه على السيرفر.
- تثبيت نسخة — الإضافة الحسّاسة تفضل على نسخة متجرّبة، وتحديثها بيختفي من ووردبريس خالص فمحدش يحدّثها بالغلط.
⚡ التحديث التلقائي «الأمني بس»
التحديث التلقائي الكامل بيخوّف، والتحديث اليدوي بيتأجّل للأبد. الحل الوسط إن الأمني بس هو اللي يعدّي لوحده.
وفيه صراحة مطلوبة هنا: مستودع ووردبريس مابيعلّمش الإصدار الأمني. فبنستنتجه من سجل التغييرات (كلمات زي security أو CVE أو XSS) ومن شكل رقم الإصدار (ترقيعي يعني الرقم التالت بس اتغيّر). الاستنتاج ده مش مضمون ١٠٠٪، وعشان كده الوضع مش مشغّل افتراضيًا والشاشة بتقول إنه استنتاج مش إعلان رسمي.
🐞 تصليح
الإضافات اللي ملف واحد في الجذر (زي hello.php) كان اسمها بيتحسب hellophp — لأن sanitize_key() بتاكل النقطة. النتيجة إن كل استعلامات المستودع عنها بترجع فاضية بصمت، فلا بتتفحص ولا بتتبلّغ. الاختبار هو اللي كشفها.
الاختبارات
٤٨٠ اختبار ناجح (٣٦ جديدة). الاختبار مابيثبّتش ولا يحدّث ولا يحذف أي إضافة: بيانات المستودع بتتحقن في الكاش عشان مايعتمدش على الشبكة، والفحص بيتجرّب على الإضافات الموجودة فعلًا من غير ما تتلمس.
5.17.0 · 2026-09-04
🔬 ست طبقات كشف جديدة — الأماكن اللي الفحص العادي مابيبصّش فيها
حارس الملفات بيقارن ببصمة محفوظة، وحارس المحتوى بيقرا الداتابيز. الإصدار ده بيغطّي الفجوات بينهم، وكل واحدة منها استُغلّت في هجمات حقيقية:
- بصمات النواة الرسمية (حرج) — الفرق بين «الملف اتغيّر» و«الملف مش زي الأصل». موقع اتثبّت وهو مخترَق أصلًا بتتاخد بصمته المحلية من نسخة مصابة، فالمقارنة بيها بتقول «مافيش تغيير» للأبد. المقارنة بمستودع ووردبريس هي الوحيدة اللي بتكسر الدايرة دي.
- الريدايركت المشروط (حرج) — الحقنة بتوجّه زوار جوجل بس، وإنت بتفتح موقعك وتلاقيه سليم تمامًا ومش فاهم ليه جوجل حاطط تحذير. الكشف الوحيد الممكن: نطلب صفحتك بهوية جوجل ونقارن — الريدايركت، وحجم الصفحة، والكلمات اللي بتظهر للبوت بس.
- ملفات قابلة للتنفيذ في مجلد الرفع (حرج) — الباب الخلفي النايم مافيهوش نمط خبيث، هو بيستنى نداء. اللي بيفضحه إنه في مكان مالوش لازمة يبقى فيه كود.
- صور جوّاها كود (حرج) — ملف بامتداد صورة وجوّاه PHP. بنفحص أول وآخر ٤ كيلوبايت من صور آخر شهرين بس، عشان الفحص يفضل رخيص.
- سبام في وسوم الميتا — بيتسرّب لـ
og:descriptionمن غير ما يبان في الصفحة. الزائر مايشوفهوش وجوجل بيشوفه. - كود خبيث في جداول إضافات تانية (حرج) — النماذج والتعليقات بتخزّن HTML خام. أماكن حقن ماحدش بيفحصها.
🚫 وفحص الملف وقت الرفع
الفحص بعد ساعة معناه إن الشل اشتغل ساعة. دلوقتي الرفع نفسه بيترفض لو الاسم فيه امتداد مزدوج، أو لو ملف بامتداد صورة/مستند جوّاه وسم PHP.
الجزء اللي أخد شغل أكتر من الكشف نفسه
أول ما فحص «الملفات في مجلد الرفع» اشتغل على موقع حقيقي، طلّع ست ملاحظات حرجة على موقع سليم تمامًا: ملفات .htaccess وindex.php حاطّينها ووكومرس وWPForms وميلشيمب.
والمفارقة إن الـ.htaccess دول حماية مش خطر — محتواهم SetHandler none وphp_flag engine off، يعني بيمنعوا تنفيذ PHP في المجلد. التبليغ عنهم بيقلب الوحدة ضد نفسها.
فالفلتر بقى يفرّق: .htaccess بيتبلّغ عنه بس لو بيشغّل مفسّر (AddHandler … php، +ExecCGI)، وindex.php بيتبلّغ عنه بس لو فيه كود مشبوه فعلًا (eval، base64_decode، $_REQUEST) — مش مجرد إنه مش فاضي، لأن ملف حراسة بيرمي 404 بـheader() كود شرعي تمامًا.
📤 تصدير النتايج CSV
زرار في شاشة المراقبة بيصدّر كل النتايج المفتوحة. فيه BOM عشان إكسل يقرا العربي صح — من غيره الملف بيفتح طلاسم. فريق أمن الشركة بيبلع الملف في أدواته، والوكالة بترفقه مع تقرير الحادثة.
الاختبارات
٤٤٤ اختبار ناجح (٣٢ جديدة). الاختبار بيزرع ملفات حقيقية في مجلد الرفع (شل، وصورة جوّاها كود) ويتأكد إنها بتتمسك، وبيتأكد كمان إن ملفات الإضافات المحترمة مش في القايمة — وبصمات النواة بتتحقن في الكاش عشان الاختبار مايعتمدش على الشبكة.
5.16.0 · 2026-09-04
🛒 حماية المتجر: الطبقة اللي بتحرس الفلوس
حماية المتجر اللي موجودة بتتعامل مع الهجمات الآلية: اختبار بطاقات، تخمين كوبونات، قراءة صفحات الطلبات. الإصدار ده بيتعامل مع نوع تاني خالص — التغييرات الصغيرة اللي بتسرق فلوس من غير ما تكسر حاجة.
أخطر أربع لحظات في متجر مخترَق
- بوابة الدفع بتتغيّر. إعداد واحد، والفلوس بتروح لحساب تاني. الموقع شغّال، الطلبات بتتسجّل، ومحدش بيلاحظ غير مع كشف حساب آخر الشهر. البصمة بتتاخد من الإعدادات كلها مش من اسم البوابة — تغيير رقم الحساب جوّه نفس البوابة هو بالظبط الهجوم، والاسم مابيتغيّرش.
- سكربت بيتحط في صفحة الدفع. سطر واحد بيقرا حقول البطاقة وبيبعتها لبره (Magecart). الصفحة بتشتغل عادي، والعميل بيستلم طلبه، والبطاقة بتتباع. الوحدة بتقارن دومينات السكربتات في صفحة الدفع بلقطة، وأي دومين جديد = تنبيه حرج.
- سعر منتج بيتقلب. سواء خطأ بشري أو اختراق، منتج بـ٥٠٠٠ بقى بـ٥٠ بيتباع مية مرة قبل ما حد يفوق. النسبة اللي تعتبر شاذة قابلة للضبط.
- ويبهوك جديد بيتضاف. نسخة من كل طلب — بكل بيانات العميل — بتروح لسيرفر بره من غير أي أثر في الموقع.
الأربعة مشتركين في حاجة: مافيش فيهم خطأ ولا تحذير. الموقع بيفضل شغّال تمامًا. الطريقة الوحيدة لكشفهم هي مقارنة بلقطة أساس — نفس منطق وحدة المراقبة، مطبّق على المتجر.
🎯 درجة مخاطرة لكل طلب
مش نموذج ذكاء اصطناعي ولا خدمة خارجية — مجموع نقاط من إشارات كل واحدة لوحدها عادية: أول طلب من الإيميل ده، بلد الشحن غير بلد الفوترة، قيمة عالية، محاولات دفع فاشلة من نفس العنوان، إيميل مؤقت، تليفون ناقص. الاجتماع هو اللي بيفرق.
الدرجة بتظهر في عمود في قايمة الطلبات بلون حسب مستواها، وأسبابها في الـtooltip — عشان اللي بيجهّز الشحن يبص عليها قبل ما يبعت، مش عشان تتدفن في تقرير.
كمان
- حساب جديد عنده صلاحيات على المتجر (مدير أو مدير متجر) — تنبيه حرج.
- سجل تغييرات الطلبات — مين غيّر الحالة أو الإجمالي ومتى. أساس أي نزاع، وتغيير الإجمالي تحديدًا أخطر تعديل ممكن يحصل على طلب.
- مراقبة الاستردادات — نمط متكرر في فترة قصيرة.
كل الملاحظات بتروح لنفس شاشة المراقبة مش شاشة جديدة — مافيش مكان تاني تفتكر تبص عليه.
الاختبارات
٤١٢ اختبار ناجح (٣٤ جديدة، اتنفّذت على متجر ووكومرس حقيقي). الاختبار مابيغيّرش ولا سعر ومابيسيبش ولا طلب: بيتلاعب في اللقطة المخزّنة عشان يجبر الحرّاس يشوفوا فرق، ودرجة المخاطرة بتتجرّب على طلبين مؤقتين بيتمسحوا نهائي في نفس التشغيلة.
5.15.0 · 2026-09-04
🛡️ الوضع الآمن بضغطة
السويت فيه أكتر من ١٢٠ إعداد. ودي مشكلة في حد ذاتها: الإعداد اللي محدش لاقاه هو إعداد مطفي، والإضافة اللي نص مميزاتها مدفونة بتتقيّم كأنها نص إضافة.
زرار واحد في تبويب الدرجة بيشغّل كل حاجة بتحمي من غير ما تغيّر تجربة الزائر أو الموظف: الحرّاس الستة، والمراقبة، والتنضيف التلقائي، ورؤوس الأمان، والتقرير الشهري، وإخفاء عناوين الـIP، والجدار في وضع التعلّم.
والأهم: الشاشة بتقولك صراحةً إيه اللي مش هيتلمس ولّيه — الجدار مش هيتحوّل للمنع، وسياسات كلمات المرور والتحقق بخطوتين والوضع السيادي وحجب الدول كلهم قرارات ليها تمن على المستخدمين، فبتفضل قرارك. الزرار اللي بيغيّر إعدادات من غير ما يقول إيه اللي سابه محدش بيثق فيه.
🔍 بحث في الإعدادات
اكتب في الخانة اللي فوق يمين (أو اضغط /) والصفحة بتتفلتر لحظيًا — الصفوف اللي مش مطابقة بتختفي، والبطاقة اللي كل صفوفها اتخفت بتختفي معاها.
البحث بيقرا الصفحة نفسها مش فهرس جاهز. الفهرس معناه إن كل إعداد جديد لازم حد يفتكر يضيفه — وده اللي بينسى. بالطريقة دي أي إعداد يتضاف بيدخل البحث لوحده.
🌙 وضع ليلي
محدش بيراجع سجلات أمنية الساعة ٢ الفجر على خلفية بيضا. الزرار جنب البحث، والاختيار محفوظ في المتصفّح.
التنفيذ بيعيد تعريف متغيّرات الألوان بس — مافيش ولا قاعدة لون بتتكرر، وأي عنصر جديد في اللوحة بياخد الوضعين مع بعض من غير شغل إضافي.
👁️ وضع العرض للعميل
ضيف &mps_view=client على رابط أي شاشة: كل حقول الإدخال والأزرار بتتقفل، وشريط ثابت فوق بيقول إن الشاشة للقراءة بس ومعاه مخرج. تفتحها قدّام العميل من غير خوف إنه يضغط حاجة.
الوضع بيتفعّل بمعامل في الرابط مش بإعداد محفوظ — الإعداد المحفوظ كان حد هينساه شغّال ويفتكر إن الإضافة باظت.
⌨️ اختصارات
/— يودّيك لخانة البحثShift + D— الوضع الليليShift + S— حفظ إعدادات الصفحةEsc— يلغي البحث
الاختبارات
٣٧٨ اختبار ناجح (٣٢ جديدة). أهم اختبار في الوضع الآمن مش «هل شغّل الحرّاس» — ده السهل. الأهم هل ساب اللي المفروض يسيبه: ست تأكيدات بتتحقق إن الجدار فضل في التعلّم، وإن سياسات كلمات المرور والتحقق بخطوتين والوضع السيادي وحجب الدول والحذف عند الإزالة ماتلمسوش.
5.14.0 · 2026-09-04
📣 تبويب جديد: التنبيهات
السويت كله كان بيبعت على الإيميل. والإيميل على ووردبريس مشكلة مركّبة: نص المواقع مابتبعتش أصلًا (الاستضافة قافلة sendmail)، والنص التاني رسايله بتقع في السبام، واللي بتوصل بتقعد في صندوق محدش بيفتحه غير آخر اليوم. وحادثة أمنية عمرها ست ساعات مش حادثة — دي نتيجة.
خمس قنوات، كلها بتشتغل بنفس الفكرة: ويبهوك واحد بصيغة مختلفة. مافيش مكتبات ولا حسابات — لينك بتلزقه من التطبيق وخلاص:
- تيليجرام — بوت و
chat_idفي حقل واحد. أسرع قناة وأسهل واحدة في الإعداد. - سلاك وديسكورد — Incoming Webhook. الفرق بينهم في شكل الحمولة بس، وديسكورد بيتقصّ عند ١٩٠٠ حرف عشان مايرفضش الرسالة.
- واتساب — أي بوابة بتقبل
POST. بنبعت الحقلينmessageوtextمع بعض عشان معظم البوابات تشتغل من غير ضبط. - ويبهوك عام — JSON خام فيه الأحداث كاملة مش النص بس، لأي نظام تاني: n8n، زابير، لوحة العميل.
التجميع — الجزء اللي بيخلّي القناة تفضل مفيدة
هجوم واحد بيولّد ٤٠٠ حدث. من غير تجميع، القناة بتتحول من تنبيه لضوضاء، وأول حاجة صاحب الموقع بيعملها إنه يكتم الإشعارات — وساعتها التنبيه اللي يهم فعلًا مش هيوصل.
فالأحداث بتتجمّع في نافذة (٥ دقايق افتراضيًا) وبتتبعت رسالة واحدة فيها العدد وآخر عشرة عناوين. والحرج بس هو اللي بيكسر النافذة ويخرج فورًا. ومعاه فلتر درجة: تختار تستقبل الحرج بس، أو الحرج والتنبيهات، أو كل حاجة.
وفيه شبكة أمان: لو الكرون ماشتغلش، الطابور بيتفرّغ مع أي زيارة بعد النافذة — من غير كده الحدث ممكن يقعد لبكرة.
الوحدات بتوصل القنوات لوحدها
بدل ما كل وحدة تعرف القنوات، الوحدات بتسجّل في سجل النشاط زي ما هي، والقنوات بتسمع من هناك عبر خطّاف جديد (mirror_activity_recorded). يعني أي وحدة تتضاف بعد كده بتدخل التنبيهات من غير ما تتعدّل.
⌨️ أوامر سطر الأوامر
كل حاجة كانت بتتعمل من اللوحة بس، وده بيقفل الباب قدّام أي أتمتة: مافيش فحص في خط النشر، ولا وكالة بتفحص ٤٠ موقع بسكربت واحد.
wp mps status— الدرجة والنتايج المفتوحةwp mps scan [content|watch|all]wp mps clean— تنضيف الحقن الحرجة (بنسخة رجوع زي الزرار)wp mps update [--install]wp mps firewall [summary|clear]wp mps reportوwp mps notify
الأوامر دي مش واجهة تانية — هي نفس الدوال اللي اللوحة بتناديها، فمافيش منطق متكرر ومافيش سلوك بيختلف. وبترجّع كود خروج صح: صفر يعني نضيف وواحد يعني فيه حاجة حرجة — ده اللي بيخلّي wp mps status ينفع يبقى خطوة في CI.
الاختبارات
٣٤٦ اختبار ناجح (٢٩ جديدة). اختبار القنوات مابيبعتش ولا طلب شبكة: بيوقف كل طلب خارج ويفحص الحمولة اللي كانت هتتبعت لكل قناة — تيليجرام وسلاك وديسكورد مش نفس الصيغة، والاختبار بيتأكد من التلاتة.
5.13.0 · 2026-09-04
🧱 تبويب جديد: الجدار الناري
كل الوحدات اللي قبل كده بتشتغل بعد ما الطلب يعدّي: الكشف بيقولك حصل، والمراقبة بتقولك اتغيّر إيه. دي أول وحدة بتمنع من الأول.
ليه ده صعب يتعمل صح
جدار ناري على موقع حقيقي مسألته مش «امنع الهجمات» — دي سهلة. مسألته ماتمنعش العملاء: قاعدة واحدة زيادة عن اللزوم بتوقّف صفحة الدفع، وصاحب الموقع مش هيربط بين الحاجتين، وهيشيل إضافة الحماية كلها. عشان كده الوحدة مبنية على تلات مبادئ:
- وضع التعلّم أولًا — أول ما تشغّلها بتسجّل وماتمنعش. تقعد أسبوع تتفرّج على «اللي كان هيتمنع»، وبعدين تحوّلها لمنع. أي إضافة بتبدأ بالمنع من اليوم الأول بتكسر مواقع.
- الاستثناءات قبل القواعد — صفحة الدفع وويبهوك ووكومرس ومسار تحديثات السويت بيعدّوا من غير فحص أصلًا، ومعاهم قايمة استثناءات بتضيف عليها.
- القاعدة الغامضة بتسجّل والواضحة بتمنع —
../../etc/passwdمافيهاش أي احتمال برئ. كلمةselectفي تعليق فيها كل الاحتمالات.
اللي بيمسكه
- ست قواعد محتوى: الخروج من مجلد الموقع، مُغلِّفات PHP، حقن SQL، حقن سكربت، تنفيذ أوامر، ومحاولة قراءة ملف حسّاس (
wp-config.php،.env،.git/). كل قاعدة تتطفّى لوحدها بالاسم لو طلّعت إنذار كاذب متكرر — بدل ما تطفي الجدار كله. - سقف معدّل على
wp-login.phpوxmlrpc.phpوwp-json— التلاتة دول بوابات التخمين المعروفة، والزائر الطبيعي عمره ما بيلمسهم بالمعدّلات دي. - البوت المزيّف — أشهر خدعة لتخطّي الحجب إنك تحط Googlebot في الـUser-Agent. التحقق بالـDNS العكسي + التأكيد إن الدومين بيرجّع نفس العنوان. ولو الـDNS مش شغّال مابنتهمش حد.
- أدوات الفحص (sqlmap، nikto، wpscan…)، الامتداد المزدوج في الرفع، والطلب من غير User-Agent (اختياري).
- قوايم بيضا وسودا بتقبل عنوان كامل أو بادئة بنجمة أو نطاق CIDR.
- سمعة متدرّجة — العنوان اللي بيخالف كذا مرة بيتراكم عليه، بدل حظر أبدي من أول غلطة أو تسامح لا نهائي.
حجب الدول من غير خدمة خارجية
الوحدة مابتستعملش أي خدمة تحديد موقع — ده طلب شبكة على كل زيارة، وتسريب بيانات زوّار لطرف تالت. بنقرا الهيدر اللي الشبكة نفسها بتحطه (كلاودفلير أو الاستضافة): موجود ودقيق ومجاني، ولو مش موجود القاعدة بتتخطّى والشاشة بتقولك كده صراحةً.
الأداء
الفحص بيمشي من الأرخص للأغلى وأول رفض بيوقّف الباقي، وفيه سقف ٦٤ كيلوبايت على المحتوى اللي بيتفحص. القياس على موقع حقيقي: ٠.٠٢ مللي ثانية للطلب العادي، و١.٣ مللي ثانية لطلب فيه ٣٢٠ كيلوبايت.
الاختبارات
٣١٧ اختبار ناجح (٥٨ جديدة). والجزء الأهم فيهم مش «هل بيمسك الهجمات» — ده السهل. الأهم عشر طلبات شرعية لازم تعدّي: بحث فيه كلمة select، وتعليق فيه from، وفلتر ووكومرس، ورابط في حقل، وJSON عربي. كلهم بيعدّوا.
5.12.0 · 2026-09-04
🔑 الطبقات اللي بتشتغل بعد ما كلمة السر تبقى صح
قفل الدخول بيتعامل مع المهاجم اللي مايعرفش كلمة السر: بيعدّ المحاولات ويقفل ويأخّر. الإصدار ده بيتعامل مع الحالة الأصعب — المهاجم اللي يعرفها، لأن ساعتها كل عدّادات المحاولات مالهاش أي قيمة: هو بيدخل من أول مرة زي أي مستخدم عادي.
- منع كلمات المرور المسرّبة — أشهر طريقة المهاجم بيعرف بيها كلمة السر إنها متسرّبة من موقع تاني. الفحص بتقنية k-anonymity: بنبعت أول ٥ حروف من بصمة SHA-1 بس، والخدمة بترد بكل البصمات اللي بتبدأ بيهم، والمقارنة بتحصل عندنا. يعني كلمة السر (ولا حتى بصمتها كاملة) عمرها ماتخرج من الموقع. ولو الخدمة مش شغّالة مابنمنعش المستخدم — التوفّر أهم من فحص إضافي.
- منع إعادة استخدام كلمة مرور قديمة — الموظف اللي خرج غالبًا فاكر آخر كلمة سر استعملها. بنخزّن بصمات مش كلمات، فلو الداتابيز اتسرّبت الجدول ده مابيضيفش ولا معلومة للمهاجم.
- عمر كلمة المرور — كلمة سر عندها سنتين على حساب مدير معناها إنها اتكتبت على أجهزة كتير من ساعتها. بيتطبّق على الأدوار العالية بس: إجبار كل مشترك في متجر يغيّر كلمة سره كل ٩٠ يوم بيخسّر عملاء ومابيأمّنش حاجة. والحساب اللي مالوش تاريخ مسجّل مابيتقفلش بأثر رجعي.
- تنبيه الدخول من جهاز جديد — دي الطبقة الوحيدة اللي بتمسك المهاجم اللي معاه البيانات الصح فعلًا: الدخول نجح، بس من مكان وجهاز الحساب ده عمره ما دخل منهم. البصمة من شبكة العنوان (أول تلات خانات) + المتصفّح، مش العنوان كامل — كده التنقل بين الواي فاي وبيانات الموبايل مابيبلّغش، والدخول من بلد تانية بيبلّغ.
- إدارة الجلسات — تشوف كل جهاز داخل على الموقع وتنهي أي جلسة لوحدها، من غير ما تقفل الناس كلها.
الأربعة الأولانيين مطفيين افتراضيًا — دول سياسات بتغيّر تجربة المستخدمين، والقرار لك مش لينا. وفحص التسريبات محتاج اتصال خارجي، فالوضع السيادي (5.11.0) بيمنعه — وده صح.
الاختبارات
٢٥٩ اختبار ناجح (٣٠ جديدة). الاختبار مابيغيّرش كلمة سر حد ومابيقفلش جلسة حد: بيشتغل على مستخدم مؤقت بيعمله ويمسحه، وفحص التسريبات بيتجرّب بكاش محقون في الذاكرة من غير أي طلب شبكة.
5.11.1 · 2026-09-04
🐞 التثبيت بقى بعد الرد مش قبله
الباج ده اتكشف على موقع حقيقي: تلات دفعات وصلت واتثبتت في ثواني، والرابعة رجعت «الموقع مش راد» — والموقع كان شغّال تمامًا.
السبب: المستقبِل كان بينزّل الحزمة ويفكّها ويثبّتها جوّه الطلب نفسه، والمركز مستنّي رد في ثواني. لو السيرفر مشغول شوية، الاتصال بيتقطع قبل ما التثبيت يخلص. النتيجة أحسن حالاتها إن المركز يسجّل فشل كاذب — وأسوأ حالاتها إن القطع يوقّف PHP في نص استبدال الملفات ويسيب الإضافة نص مثبّتة.
الإصلاح: المستقبِل بيرد فورًا بـqueued، والتثبيت بيتنفّذ بعد ما الرد يتبعت فعلًا (fastcgi_finish_request + ignore_user_abort + سقف وقت ٥ دقايق). يعني الاتصال بيتقفل قبل ما الشغل الطويل يبدأ، ومافيش قطع ممكن يمسك التثبيت في نصّه.
والمركز بقى يتأكد بنفسه
لأن الرد بقى «استلمت» مش «اتثبّت»، المركز بيسأل كل موقع تاني بعد ٤ دقايق: «إنت شغّال نسخة كام؟» ويسجّل الرد الحقيقي في جدول التفعيلات. دفعة محدش بيتأكد منها = تحديث «اتبعت» وبس.
ملحوظة للي بيتابع: النسخة اللي قبل دي (5.11.0) وصلت المواقع عادي — الباج بيظهر بس لما التثبيت ياخد وقت أطول من مهلة المركز، وساعتها الفحص الساعي كان بيلحقها بعد ساعة بالكتير. دلوقتي مافيش انتظار أصلًا.
5.11.0 · 2026-09-04
🔒 تبويب جديد: الخصوصية
السويت بطبيعته بيشوف أكتر من أي إضافة تانية على الموقع: كل محاولة دخول، وكل عنوان، وكل تعديل على المحتوى، وكل ملف اتغيّر. الصلاحية دي بتيجي معاها مسؤولية — والتبويب الجديد هو الرد على السؤال اللي أي مشتري جاد بيسأله: «طيب والبيانات دي بتروح فين؟»
- إخفاء العناوين — آخر جزء من الـIP بيتشال قبل التخزين:
1.2.3.4بتبقى1.2.3.0(وIPv6 بيتقصّ لأول ٤٨ بت). لسه ينفع تحجب وتحلّل، بس مابقاش عندك بيانات تعرّف شخص — ده مطلوب قانونًا في أوروبا. - مدة احتفاظ لكل جدول — البيانات اللي محدش محتاجها بتتحوّل من أصل لمسؤولية. الافتراضي ١٨٠ يوم.
- تصدير وحذف بيانات أي مستخدم — السويت بيسجّل نفسه في أدوات الخصوصية بتاعة ووردبريس نفسها، فطلب «صدّرلي بياناتي» أو «امسح بياناتي» بيشمل سجل السويت كمان.
- صفحة «إحنا بناخد إيه بالظبط» — سطر لكل بيانة: بتتخزّن فين، وقد إيه، وبشكل إيه، وبتخرج من الموقع ولا لأ. الشفافية دي أسهل حاجة تتعمل وأكتر حاجة بتتنسى.
🏛️ الوضع السيادي
بيمنع أي طلب HTTP خارجي لأي دومين مش في القايمة. ده الشرط الأول في أي مناقصة حكومية أو مؤسسية.
وده الإعداد الوحيد في السويت اللي بيأثّر على باقي إضافات الموقع — وده مقصود: «سيادي» معناها إن الموقع مايكلّمش حد، مش إن السويت بس مايكلّمش حد. عشان كده مطفي افتراضيًا ومعاه تحذير واضح، ومعاه قايمة دومينات مسموحة، وسجل بآخر اللي اتحجب عشان تعرف تضيف اللي محتاجه فعلًا.
مسار المركز مستثنى دايمًا — من غيره الموقع السيادي مايقدرش يستقبل ترقيع أمني، وده بيحوّل الإعداد من حماية لخطر.
🧹 الإزالة النضيفة
الإضافة بقى معاها uninstall.php بيمسح كل جداولها وأوبشناتها وميتاها ومهامها المجدولة — بس لو المالك طلب كده صراحةً.
الافتراضي إنه مايمسحش، والسبب مش كسل: أكتر لحظة الناس بتشيل فيها إضافة الحماية هي وهي بتحاول تصلّح مشكلة — يعني بالظبط اللحظة اللي تاريخ الحوادث والنسخ الاحتياطية بتاعة التنضيف بيبقوا مهمين فيها.
الاختبارات
٢٢٥ اختبار ناجح (٢٨ جديدة للخصوصية). اختبار الوحدة مابيمسحش ولا صف من الموقع: التنضيف بيتجرّب بمدة احتفاظ ١٠٠ سنة (فمافيش حاجة أقدم منها)، والوضع السيادي بيتجرّب على دالة الحجب مباشرة من غير أي طلب شبكة حقيقي.
5.10.0 · 2026-09-04
✉️ كل رسايل السويت اتعمل لها تصميم واحد
قبل كده كل وحدة كانت بتبني نص خام وتبعته. النتيجة كانت سبع رسايل بسبع أشكال مختلفة، كلها نص مرصوص من غير أي ترتيب — ورسالة أمنية مالهاش شكل بتتقري كأنها سبام، أو مابتتقريش أصلًا. دلوقتي السبعة كلهم على قالب واحد.
- شريط لون حسب الخطورة — أحمر للحرج، برتقالي للتنبيه، أخضر للتمام، تركوازي للمعلومة. أول حاجة العين تشوفها بتقول خطورة الرسالة قبل أي كلمة.
- بطاقات أرقام للتقارير (كام محاولة اتمنعت، كام حقنة اتشالت) بدل سطور نص.
- جداول مرتّبة للتفاصيل، وقوايم بنقط، وكتلة كود واضحة لكود الدخول، وزرار يوديك للشاشة المظبوطة.
- ترويسة وتذييل فيهم اسم الموقع والدومين والتاريخ.
اتعمل بقواعد البريد مش قواعد الويب
برامج البريد مش متصفّحات، وكل قرار في القالب ليه سبب:
- جداول مش flex/grid — أوتلوك بيرندر بمحرّك وورد وبيتجاهل أي
display:flexويطلّع كل حاجة فوق بعضها. - ستايل سطري — جيميل بيشيل كتلة
<style>في حالات كتير، فأي لون مهم لازم يبقى على العنصر نفسه. - مافيش خطوط ويب — جيميل مابيحمّلش خطوط خارجية، والنتيجة نص عربي على خط افتراضي وحش. فبنستعمل خطوط النظام من الأول.
- خلفية صريحة على كل خلية — برامج كتير بتقلب الألوان في الوضع الليلي، والخلية اللي مالهاش خلفية بتاخد لون البرنامج ويبقى النص مش مقروء.
- الزرار جدول مش لينك بحشو — الحشو على اللينك مابيتحسبش في أوتلوك والزرار بيبقى سطر نص عادي.
نسخة نصية جنب الـHTML
كل رسالة بتتبعت multipart: HTML ونص عادي مبني من نفس البيانات مش متحوّل من الـHTML. ده مش رفاهية — الرسالة اللي مالهاش نسخة نصية بتاخد نقطة سلبية في فلاتر السبام، وفيه ناس لسه بتقرا بريدها نص.
🐞 تصليح
وحدتين من اللي نزلوا في 5.8.0 و5.9.0 كانوا بينادوا mirror_security_email() من غير مفتاح الإعداد — وده بيرمي ArgumentCountError على PHP 8 وقت إرسال تنبيه المراقبة أو التقرير الشهري. اتصلّح، ومعاه حقل جديد لإيميل تنبيهات المراقبة (فاضي = إيميل المدير).
الاختبارات
١٩٧ اختبار ناجح (٣٦ جديدة للرسايل). أهم اختبار فيهم مش شكل الرسالة — هو إن فلتر wp_mail_content_type مايفضلش متعلّق بعد الإرسال: الفلتر ده عام على الموقع كله، ولو اتساب شغّال كل رسالة من أي إضافة تانية هتتبعت HTML وهتوصل للناس كود خام. ومعاه اختبارات هروب: وسم <script> أو onerror أو رابط javascript: جوّه أي قيمة بيتهربوا كلهم.
5.9.0 · 2026-09-04
📊 تبويب جديد: درجة الأمان
كل الشاشات اللي قبل كده بتجاوب على «إيه اللي حصل؟». الشاشة الجديدة بتجاوب على سؤال مختلف تمامًا وأصعب: «إحنا كويّسين ولا لأ؟» — وده السؤال اللي صاحب الموقع بيسأله فعلًا.
- رقم من ١٠٠ بدل قايمة فحوصات مالهاش معنى لغير المتخصص. والفحوصات موزونة مش متساوية: الوزن الأعلى للحاجات اللي بتقفل باب دخول فعلي — وصول التحديثات، وقفل الدخول، وحارس المحتوى، والنتايج الحرجة المفتوحة. أقل وزن للتحسينات.
- كل فحص راسب بيطلع ومعاه الخطوة اللي تعديه، ولينك للتبويب اللي فيه الإعداد. درجة من غير خطوة بتخلّي الناس تتفرّج مش تتحرّك.
- القايمة مرتّبة بالأثقل الأول، فأول خطوة تشوفها هي أكتر واحدة بتفرق.
الفحوصات بتغطّي: وصول التحديثات والتثبيت التلقائي، الحرّاس الستة، التنضيف التلقائي، التحقق بخطوتين، النتايج الحرجة المفتوحة، HTTPS، وجود مستخدم اسمه admin، قفل تعديل الملفات، نسخة PHP، وعرض الأخطاء للزوار.
🛡️ «إحنا منعنا إيه الشهر ده»
العميل مش شايف الهجمات اللي مامرّتش — فمن غير الأرقام دي هو حاسس إنه بيدفع في حاجة مابتعملش حاجة. الشاشة بتعرض آخر ٣٠ يوم: محاولات الدخول المرفوضة، الحقن اللي اتكشفت، اللي اتشال منها، نتايج حارس الملفات، وملاحظات المراقبة.
وكلها من بيانات مخزّنة أصلًا — مافيش ولا عدّاد جديد اتزوّد عشان الشاشة دي، يعني مافيش تكلفة أداء.
📧 التقرير الشهري
إيميل كل ٣٠ يوم فيه الدرجة + أرقام الشهر + أهم خمس خطوات. التقرير اللي بيوصل لوحده أول كل شهر بيخلّي التجديد قرار سهل. الإيميل قابل للضبط (فاضي = إيميل المدير)، وفيه زرار «ابعت دلوقتي» للتجربة.
الاختبارات
١٦١ اختبار ناجح (٢٢ جديدة للدرجة). اختبار الدرجة بيحسبها مرتين — مرة وكل الحرّاس مطفيين ومرة وكلهم شغّالين — عشان يتأكد إن الوزن بيتحرّك في الاتجاه الصح، ومابيبعتش ولا إيميل ومابيغيّرش أي إعداد على الموقع.
5.8.0 · 2026-09-04
تبويب جديد: 🛰️ المراقبة والاستجابة
الوحدات اللي قبل كده بتفحص محتوى: ملفات وصفحات وطلبات. الوحدة الجديدة بتراقب حالة الموقع نفسه — وده نوع تاني خالص من الكشف.
مافيش «نمط خبيث» في إن يبقى فيه أدمن جديد، أو إن wp-config.php اتعدّل، أو إن فيه مهمة كرون جديدة. دي حاجات عادية تمامًا لو إنت اللي عملتها، وأخطر إشارة في الدنيا لو مش إنت. عشان كده كل حارس بيشتغل بنفس المنطق: لقطة أساس أول مرة من غير أي تبليغ (وإلا كل موقع هيغرق في تنبيهات أول يوم)، وبعدها أي فرق بيتبلّغ.
السبعة حرّاس
- حساب مدير جديد أو دور اتصعّد (حرج) — أول أثر ملموس لأي اختراق ناجح. بيتمسك لحظة التصعيد كمان، مش بالفحص اليومي بس.
- تغيّر ملف حسّاس (حرج) —
wp-config.phpو.htaccessوindex.phpوكل ملف فيmu-plugins. دول مابيتغيّروش صدفة، وتعديل سطر واحد فيهم بيفتح الموقع بالكامل. - مهمة كرون مالهاش دالة مسجّلة — أشهر مكان بيتزرع فيه «رجوع الاختراق»: تنضّف الموقع، وبعد يوم الحقنة ترجع، وماتعرفش منين.
- نسخة PHP أو ووردبريس منتهية الدعم — بيحصل في صمت والاستضافة مابتنبّهش.
- جرد كامل للإضافات والقوالب — مش تنبيه، ده الأساس اللي أي تحقيق في حادثة بيقف عليه.
- المساحة — الاستضافة المشتركة بتقف على عدد الملفات (inodes) قبل المساحة بكتير، والموقع بيقع بشكل غامض: الرفع بيفشل والكاش مابيتكتبش ومافيش رسالة واضحة.
- قفزة في صفحات مش موجودة — عدد كبير من 404 في ساعة معناه فحص ثغرات آلي شغّال على الموقع دلوقتي. السقف قابل للضبط.
كلهم بيقروا بس: مافيش حارس هنا بيكتب على الموقع ولا بيحجب حاجة. التبليغ وظيفتهم، والقرار لك.
🚨 وقت الحادثة — تلات إجراءات بضغطة
الفرق بين إضافة حماية ومنتج حماية هو اللي بيحصل بعد ما الاختراق يحصل. دلوقتي فيه في نفس الشاشة التلات إجراءات اللي أي دليل استجابة بيبدأ بيهم:
- دوّر مفاتيح التشفير — بيغيّر
saltsفيwp-config.php، فكل كوكي جلسة مفتوحة بتبطل فورًا، بما فيها اللي المهاجم سرقها. أرخص إجراء في القايمة وأكتر واحد بيتنسى. وقبل أي كتابة: نسخة كاملة من الملف، وبعدها الناتج بيتفحص نحويًا ولو مكسور بيترجع الأصل فورًا — ملف إعدادات مكسور معناه موقع واقع بالكامل. - أنهِ كل الجلسات — نفس الأثر تقريبًا من غير ما نلمس ملف الإعدادات، للمواقع اللي الملف فيها مقفول للكتابة. جلستك إنت بتفضل شغّالة عشان ماتتقفلش بره موقعك.
- وضع الحصار — الموقع يفضل شغّال للزوار، وكل مسار بيدخل منه كود يتقفل: التسجيل، ورفع الملفات، وتثبيت/تعديل الإضافات والقوالب، وXML-RPC، وREST للزوار المجهولين. قفل الموقع بالكامل بيكلّف مبيعات كل دقيقة، والنتيجة إن محدش بيستعمل الزرار — فالحصار بيقفل أبواب الكتابة بس ويسيب القراءة شغّالة.
ملحوظة في الحصار: مسار دفع التحديثات بيفضل مفتوح عن قصد، وإلا الموقع المحاصر مايقدرش يستقبل الترقيع اللي هيخرجه من الحصار أصلًا. وفيه تنبيه ثابت في اللوحة طول ما الحصار شغّال، لأن الحصار المنسي أخطر من الحصار.
الاختبارات
١٣٩ اختبار ناجح. اختبار الوحدة الجديدة مابيلمسش الموقع: مابيعملش مستخدمين، ومابيكتبش في wp-config.php، ومابينهيش جلسة حد — بيتلاعب في لقطة الأساس عشان يجبر الحرّاس يشوفوا فرق، وبيختبر استبدال المفاتيح على نص وهمي.
5.7.0 · 2026-09-02
التحديث بقى يوصل في ثواني — مش في اليوم اللي بعده
قبل كده الإصدار كان بيستنى ووردبريس يسأل المركز، وده بيحصل مرتين في اليوم بالكتير، والسويت كان بيكاش الرد ١٢ ساعة. يعني تحديث أمني بينزل الساعة ٣ ممكن مايوصلش موقع العميل غير الصبح — إلا لو حد فتح شاشة التفعيل وضغط «افحص التحديثات» بإيده.
من 5.7.0: أول ما الإصدار ينزل على المركز، المركز بيدق على كل موقع مفعّل، والموقع بيتصرّف على طول. وفيه تلات طبقات عشان مافيش طبقة تكفي لوحدها:
- دقّة من المركز — الوصول في ثواني. الدقّة موقّعة بـ
hash_hmacومفتاحها كود التفعيل نفسه، فمحدش يقدر يزيّفها، ومدّتها ٥ دقايق فطلب متسجّل ماينفعش يتعاد. والمهم: الدقّة مابتحملش ولا بايت كود — هي إشارة «روح اسأل المركز» بس، والتحميل والتثبيت بيحصلوا من نفس مسار ووردبريس العادي. - فحص كل ساعة — خطة بديلة للمواقع اللي الدقّة ماتوصلهاش (جدار حماية، أو REST مقفول، أو استضافة بتحجب الطلبات الجاية). أسوأ حالة: ساعة.
- بنر في اللوحة — بيقول فيه نسخة جديدة ومعاه زرار «حدّث دلوقتي»، أو بيطمّن إن التحديث اتثبّت لوحده.
وضعين، والافتراضي هو التلقائي
- تلقائي (الافتراضي) — التحديث بيتثبّت لوحده أول ما يوصل، ولو الإضافة كانت شغّالة بتتشغّل تاني بعده على طول.
- بضغطة — لو طفّيت «ثبّته لوحده»، التحديث بيوصل بنفس السرعة بس بيستنى ضغطتك من البنر. الوضع ده للمواقع اللي أي تغيير فيها بيتراجع قبل ما ينزل.
كل ده من صفحة «التفعيل والتحديثات»، وفيها كمان سجل بآخر ٨ أحداث: القناة اللي التحديث جه منها والناتج. وبيشتغل والإضافة مقفولة — القفل عقوبة فوترة، مش سبب يخلّي موقع عالق على نسخة فيها ثغرة.
الحقنة الحرجة بتتشال أول ما تتكشف
قبل كده حارس المحتوى كان بيكشف ويبلّغ، والحقنة تفضل شغّالة على الموقع لحد ما حد يفتح الشاشة ويضغط «نضّف». دلوقتي التنضيف بيحصل لحظة الكشف.
- نسخة كاملة قبل أي كتابة — نفس مسار التنضيف اليدوي بالظبط، فالرجوع بزرار من جدول النسخ. من غير كده ده مش «تنضيف تلقائي» ده «حذف تلقائي»، وده مالوش مكان في إضافة حماية.
- التنضيف بيتنفّذ بعد ما المسح يخلص مش وسطه — التنضيف جوّه اللفّة كان هيعدّل صفوف لسه هتتقرا.
- الصفحة اللي بتطلّع أكتر من نتيجة حرجة (محتوى + ميتا + نسخ محفوظة) بتتنضّف مرة واحدة مش تلاتة.
- المفتاح شغّال افتراضيًا. لو طفّيته: التبليغ بيفضل والحقنة بتفضل مكانها لحد ما تقرر.
ملاحظة على التوقيت
المواقع اللي على 5.6.0 دلوقتي لسه مافيهاش مستقبِل الدقّة، فالإصدار ده هيوصلها بالطريقة العادية. من 5.7.0 وطالع، كل إصدار جاي بيوصل في ثواني.
5.6.0 · 2026-08-31
حارس المحتوى بقى يمسك السكربتات المشفّرة — ويشيلها
فيه حملة حقن شغّالة بتحط <script> مشفّر في محتوى الصفحات: كتلة base64 بتتفك بـXOR وتتنفّذ بـnew Function، والكود المفكوك بيسأل عقد ذكي على البلوكتشين عن عنوان سيرفر التحكّم وبعدين بيحمّل الحمولة الحقيقية منه (الطريقة معروفة باسم EtherHiding).
ليه دي كانت بتعدّي: مافيش ولا دومين مكتوب في الكود. المهاجم بيغيّر السيرفر من العقد الذكي من غير ما يلمس الموقع، فأي قايمة حجب أو قايمة بيضا عمياء عنها تمامًا. وحارس الملفات كان بيمسك العيلة دي في الملفات بس — لما الحقنة تقعد في الداتابيز مافيش ولا حرف بيتغيّر في أي ملف.
- كشف بالشكل مش بالدومين: بصمات على شكل الكود نفسه — base64 طويلة + تنفيذ ديناميكي، فك XOR،
eth_callعلى RPC عام، سلسلةfromCharCode، تركيب وسم script بمصدر متولّد وقت التشغيل، وشاشات ClickFix اللي بتخلّي الزائر ينسخ أمر ويشغّله على جهازه. - كل بصمة حرجة مركّبة من شرطين على الأقل.
atob()لوحدها كود شرعي، وnew Function()لوحدها كود شرعي — الاتنين مع بعض على سلسلة ١٢٠ حرف مافيش ليهم تفسير بريء. البصمة اللي شرط واحد بس بتتسجّل «تنبيه» ومابتتشالش تلقائيًا. - التنضيف بقى يشتغل من غير دومين. كل مسار التنضيف كان مبني على «الدومين المجهول»، فحقنة مالهاش دومين ماكانش ينفع يشيلها أصلًا. دلوقتي وسم الـscript الخبيث بيتشال كامل — بنسخة رجوع زي أي تنضيفة تانية.
- المسح بقى يوصل لأي أوبشن فيه
<script>مش ودجتس الفوتر المعروفة بالاسم بس. الحقنة في أوبشن أخطر من اللي في صفحة: بتتطبع في كل صفحة في الموقع ومابتظهرش في المحرّر خالص. ومعاه زرار «نضّف الأوبشن» في شاشة النتايج. - سكربت خارجي من دومين مش في القايمة البيضا بقى يتبلّغ كتنبيه. عمدًا مش «حرج»: المواقع بتضيف سكربتات تتبّع شرعية طول الوقت، وتنضيف تلقائي على «دومين مش في القايمة» كان هيمسح كود تحليلات صحيح.
الإنذارات الكاذبة
البصمات اتجربت على أربع مواقع شغّالة — أكتر من ١٣ ألف مكان محتوى (~١١٠ ميجا) — وطلّعت صفر نتايج. ومعاها اختبارات ثابتة على الحالات اللي شكلها مريب وهي سليمة: كود جوجل أناليتكس، JSON-LD بتاع المنتجات، jQuery سطري، صورة data URI طويلة، atob قصير شرعي، ومكتبة جافاسكريبت مصغّرة.
مهم بعد التحديث
وحدة «🩺 حارس المحتوى» مطفية افتراضيًا. لازم تشغّلها من صفحة الحماية عشان الفحص الدوري والفحص عند الحفظ والمنع يشتغلوا — التحديث لوحده مش كفاية.
5.5.0 · 2026-08-31
التفعيل بقى إجباري — الإضافة مقفولة تمامًا من غيره
قبل كده كانت البوابة «ناعمة»: من غير كود تفعيل كانت وحدات الحماية تفضل شغّالة، واللي يتقفل هو التحديثات التلقائية بس. المنطق كان إن إضافة حماية مايصحش تسيب موقع مكشوف عشان مشكلة فوترة — والنتيجة العملية إن أي نسخة متسربة كانت بتشتغل بالكامل من غير كود.
من 5.5.0: من غير كود تفعيل صالح الإضافة مابتحمّل ولا موديول واحد، مابتسجّلش أي خطّاف على الموقع، ومابتعرضش ولا صفحة في لوحة التحكم غير شاشة التفعيل. الموقع بيشتغل كإن الإضافة متوقّفة.
- البوابة قبل التحميل لا بعده: القفل في أول
eruda-logger.phpقبل أيrequire. أي موديول بيتحمّل بيسجّل خطّافاته لحظة التحميل، فالقفل بعد التحميل مش قفل. حتىincludes/features.phpاتأخّر لبعد البوابة — هو مش تعريفات وبس، فيه خطّافاتinitو AJAX وكرون لوحدة «الأدوات الإضافية». - اللي بيفضل شغّال وإحنا مقفولين — عن قصد: منظومة التفعيل نفسها (فعّل / إعادة الفحص / إلغاء / امسح) وفحص التحديثات، عشان الموقع المقفول يقدر يفتح نفسه. وكمان خطّافات التثبيت والتعطيل عشان تفعيل الإضافة يبني جداولها.
- مافيش ثابت في wp-config بيفتح القفل.
MPS_LICENSE_STRICTاتشال — بقى بلا معنى، وأي بايباس من النوع ده هو الكراك نفسه لأن اللي معاه الملفات معاه wp-config. - القفل بيبان بوضوح: تنبيه أحمر على كل صفحات اللوحة، وسطر تحت الإضافة في صفحة «الإضافات»، وشرح على شاشة التفعيل بيقول إن مافيش ولا وحدة شغّالة.
مايخصّش العميل الدافع
- وقوع المركز مايقفلش موقعك. الحُكم اللي بيوقّعه المركز بيحمل مهلة ٢١ يوم، فالفحص الأسبوعي لو فشل مايأثّرش. القفل بيحصل بانتهاء المهلة أو برفض صريح للكود (ملغي / منتهي / مش بتاع المنتج ده).
- المواقع المفعّلة حاليًا مش هتحس بأي فرق — نفس الوحدات ونفس الإعدادات.
- حُكم التفعيل بقى محفوظ في الذاكرة للطلب الواحد: البوابة بقت على كل موديول وكل صفحة، ومن غير كده كان فك تشفير + تحقّق توقيع RSA يتكرّر عشرات المرات في الطلب.
- لو امتداد
opensslمش متاح على السيرفر، شاشة التفعيل بقت تقول كده صراحةً — التحقق من التوقيع محتاجه، ومن غيره التفعيل مش هينجح مهما كان الكود صح.
5.4.1 · 2026-08-31
إصلاح: إعدادات «مركز الحماية» ما كانتش بتتحفظ
على المواقع الجديدة، أي تبويب في مركز الحماية (قفل الدخول، التحقق بخطوتين، سجل النشاط، فحص الملفات، حارس الحقن، حارس المحتوى، الرؤوس، حماية المتجر) كان بيقول «تم حفظ الإعدادات» وبعد الريفريش ترجع القيم للافتراضي — ويفضل كده مهما اتكرّر الحفظ.
السبب: ووردبريس بينقّي قيمة الأوبشن مرتين في مسار شائع: update_option() بتنقّي، وبعدين لو القيمة المخزّنة مطابقة للافتراضي المسجّل في register_setting() بتحوّل لـadd_option() اللي بتنقّي تاني. المرة التانية بيوصلها ناتج التنقية الأولى — مش بيانات الفورم — ومن غير علامة الحقول المرسلة (_fields) اللي كل تبويب بيبعتها عشان ما يمسحش تبويبات التانيين. فكانت الدالة تفهم إن مافيش حقول اتبعتت وترجّع كل القيم القديمة، فيتخزّن الافتراضي ويضيع الحفظ. وبما إن اللي بيتخزّن ساعتها هو الافتراضي بالظبط، الشرط بيفضل متحقّق فتفضل كل حفظة بعد كده تضيع.
الإصلاح: دالة التنقية بقت idempotent — تنقية ناتجها بتطلّع نفس الناتج. غياب _fields بقى معناه «دي مش إرسال تبويب» فيتحسب كل مفتاح موجود في المصفوفة كإنه مُرسَل، والناقص بس هو اللي بيتساب زي ما هو. عزل التبويبات عن بعض شغّال زي ما هو.
إصلاح: كلمة مرور SMTP كانت ممكن تتشفّر مرتين
نفس المسار كان بيضرب وحدة البريد: في أول حفظ على موقع جديد كانت كلمة المرور تتشفّر مرة في update_option() ومرة تانية في add_option()، فيتخزّن نص متشفّر فوق بعضه، والإرسال يفشل بـ authentication failed رغم إن البيانات مكتوبة صح. بقى فيه فحص mirror_smtp_is_encrypted() بيتأكد من البادئة ومن سلامة الـbase64 والطول، فالقيمة المتشفّرة بتتساب زي ما هي.
ملاحظات
- مافيش أي تغيير في السلوك أو في أي مفتاح حماية — إصلاحات حفظ بس.
- المواقع المتعطّلة بتترجع لوحدها بمجرد التحديث: افتح التبويب، اضبط المفاتيح، واحفظ — مش محتاج أي تدخّل في قاعدة البيانات.
- لو كنت حفظت إعدادات SMTP على نسخة أقدم والإرسال بيفشل، اكتب كلمة المرور تاني واحفظ.
5.4.0 · 2026-08-27
جديد: حارس المحتوى (Injection Guard)
وحدة جديدة تحت «مركز الحماية ← حارس المحتوى» تفحص قاعدة البيانات — محتوى الصفحات و_elementor_data وودجت الفوتر — لا الملفات. هذا النوع من الاختراق يُزرع من داخل لوحة التحكم بحساب مدير، فلا يترك أي أثر في أي ملف: wp core verify-checksums يخرج سليمًا ١٠٠٪ والموقع محقون فعلًا. الوحدة مكمّلة لـ«حارس الحقن» الذي يقرأ الملفات، وليست بديلًا عنه.
الحالة التي بُنيت من أجلها: متجر عربي زُرعت فيه ثلاث حقن روابط خلفية مدفوعة وبقيت تسعة أشهر دون أن ينتبه أحد. المحتوى لم يكن مخفيًا بـdisplay:none — التي تتجاهلها محرّكات البحث — بل كان مُزاحًا خارج الشاشة بـleft:-99999px، فيبقى العنصر «معروضًا» تقنيًا ويأخذ وزنه كاملًا في الفهرسة، ولا يستطيع أي زائر بشري رؤيته.
- كشف بطبقات: عنصر مخفي يحوي رابطًا لنطاق مجهول، كتلة نص مخفية، كتلة بلغة أجنبية على موقع عربي، رابط خارجي خارج القائمة البيضاء، وكلمات سبام. الطبقات ليست بدائل: إن استُخدمت طريقة إخفاء جديدة، تُمسك الحقنة من اللغة أو من النطاق المجهول.
- فحص دوري يومي أو أسبوعي للموقع كامل (ثوانٍ معدودة)، وفحص لحظي مع كل عملية حفظ.
- منع قبل التخزين: اعتراض على
wp_insert_post_dataومحرّر Elementor وكتابة الميتا المباشرة. وكل منع يظهر للمستخدم برسالة تشرح السبب وتذكر النطاق — لا فشل صامت. - تنظيف بضغطة مع رجوع: يُزال الودجت المحقون من شجرة Elementor بمعرّفه، ويُعاد الحفظ من خلال Elementor نفسه ليُعاد توليد
post_content— وإلا بقي السبام ظاهرًا في الخلاصات و REST ووسمog:description. وتُنظَّف النسخ المحفوظة أيضًا، وإلا أعادها أي استرجاع. نسخة أصلية كاملة تُحفظ قبل أي كتابة، والرجوع بزر واحد. - قائمة بيضاء تُبنى تلقائيًا من نطاقات الموقع الحالية عند التشغيل، مع زر «اعتمد هذا النطاق» بجانب كل نتيجة.
- أوامر سطر أوامر:
wp mirror-injection scan | clean | restore | allowللتشخيص من دون فتح متصفح.
ملاحظات
- الوحدة مطفأة افتراضيًا — التحديث لا يغيّر سلوك أي موقع حتى يشغّلها المالك.
- التنظيف يدوي دائمًا (زر أو سطر أوامر)؛ المهمة المجدولة تكشف وتنبّه فقط ولا تعيد كتابة أي محتوى من تلقاء نفسها.
- لا استثناء لأي دور، ولا للمدير — الحقن في هذه الحالة نُفّذ بحساب administrator، واستثناء المديرين يُلغي الوحدة من أساسها.
- لا اتصال خارجي إطلاقًا: الوحدة تعمل بالكامل دون إنترنت.
- جدولان جديدان يُنشآن تلقائيًا (سكيما التأمين ١٫٢٫٠).
5.3.1 · 2026-08-15
إصلاح: مشغّل دروس جوجل درايف على الموبايل
مشغّل درايف كان بيخفي شريط أدواته لما عرض الإطار يصغر على الموبايل. المشغّل بقى يفضل بمقاس ٦٤٠×٣٦٠ وبيتصغّر بصريًا، فالأدوات بتفضل ظاهرة. وأصول المشغّل بقت تتحمّل على صفحة الكورس كمان مش صفحة الدرس بس.
جديد: حارس الحقن (Malware Guard)
وحدة جديدة تحت «مركز الحماية ← حارس الحقن» تقرأ محتوى الملفات وتتعرّف على أنماط الحقن المعروفة — لا تكتفي بالإبلاغ عن أن ملفًا تغيّر.
- كشف: كود جافاسكريبت مشفّر (base64 + تنفيذ ديناميكي)، أبواب PHP الخلفية، نوافذ «تحقّق أنك إنسان» المزيّفة (ClickFix)، وسيرفرات تحكّم مخبّأة في بلوكتشين (EtherHiding).
- مراقبة سريعة كل ٥–٦٠ دقيقة تقرأ الملفات المتغيّرة فقط، وفحص كامل يومي أو أسبوعي، وفحص فوري بعد أي تثبيت أو تحديث لإضافة أو قالب.
- تنظيف تلقائي جراحي: يزيل الكتلة المحقونة وحدها — مع حجز نسخة أصلية قابلة للاسترجاع بضغطة، وفحص نحوي لملفات PHP بعد التنظيف، وتراجع فوري إن كان الناتج مكسورًا أو ما زال ملوّثًا. نواة ووردبريس ومجلد السويت نفسه لا تُمسّ.
- سجل وتنبيه: جدول أحداث بالوقت والملف والبصمة وحجم ما أُزيل، مع بريد مجمّع وزرّ استرجاع لكل ملف محجوز.
- قفل تعديل الملفات بضغطة واحدة (محرّر القوالب + التثبيت والتحديث والحذف).
- تنبيه على أي تعديل يمسّ
wp-config.phpأو.htaccessأوfunctions.phpأوheader/footer.
ملاحظات
- كل مفاتيح الوحدة مطفأة افتراضيًا — التحديث لا يغيّر سلوك أي موقع حتى يشغّلها المالك.
- جدول أحداث جديد يُنشأ تلقائيًا (سكيما التأمين ١٫١٫٠).
5.3.0 · 2026-08-15
جديد: حارس الحقن (Malware Guard)
وحدة جديدة تحت «مركز الحماية ← حارس الحقن» تقرأ محتوى الملفات وتتعرّف على أنماط الحقن المعروفة — لا تكتفي بالإبلاغ عن أن ملفًا تغيّر.
- كشف: كود جافاسكريبت مشفّر (base64 + تنفيذ ديناميكي)، أبواب PHP الخلفية، نوافذ «تحقّق أنك إنسان» المزيّفة (ClickFix)، وسيرفرات تحكّم مخبّأة في بلوكتشين (EtherHiding).
- مراقبة سريعة كل ٥–٦٠ دقيقة تقرأ الملفات المتغيّرة فقط، وفحص كامل يومي أو أسبوعي، وفحص فوري بعد أي تثبيت أو تحديث لإضافة أو قالب.
- تنظيف تلقائي جراحي: يزيل الكتلة المحقونة وحدها — مع حجز نسخة أصلية قابلة للاسترجاع بضغطة، وفحص نحوي لملفات PHP بعد التنظيف، وتراجع فوري إن كان الناتج مكسورًا أو ما زال ملوّثًا. نواة ووردبريس ومجلد السويت نفسه لا تُمسّ.
- سجل وتنبيه: جدول أحداث بالوقت والملف والبصمة وحجم ما أُزيل، مع بريد مجمّع وزرّ استرجاع لكل ملف محجوز.
- قفل تعديل الملفات بضغطة واحدة (محرّر القوالب + التثبيت والتحديث والحذف).
- تنبيه على أي تعديل يمسّ
wp-config.phpأو.htaccessأوfunctions.phpأوheader/footer.
ملاحظات
- كل مفاتيح الوحدة مطفأة افتراضيًا — التحديث لا يغيّر سلوك أي موقع حتى يشغّلها المالك.
- جدول أحداث جديد يُنشأ تلقائيًا (سكيما التأمين ١٫١٫٠).
5.2.1 · 2026-08-14
إصلاح مشغّل فيديو الدروس
- منع ظهور فيديو YouTube مرتين عندما تكون وحدة EGSBI ووحدة الفيديو الآمن مفعّلتين معًا.
- الإبقاء على خانة رابط YouTube وأدوات إدارة الدرس كما هي، مع اعتماد مشغّل Mirror الآمن وحده للعرض.
5.2.0 · 2026-08-04
أداة جديدة: استيراد فيديوهات الدروس من المحتوى
لو عندك دروس الفيديو فيها متحطّ كـ <iframe> جوّه محتوى الدرس نفسه — بقايا سنيبتات قديمة أو لصق يدوي — الرابط مايكونش موجود في خانة رابط الفيديو، وده بيخلّي طبقة منع «فتح في نافذة جديدة» (pop out) بتاعة جوجل درايف معطّلة والدرس مكشوف.
- فحص تلقائي لكل دروس LearnPress: بيطلّعلك جدول بكل درس فيه آيفريم فيديو داخل المحتوى، مع الرابط المستخرَج ونوعه (جوجل درايف / يوتيوب) وملاحظات لكل صف.
- نقل بضغطة: الرابط بيتحط في خانة الفيديو الصح، والآيفريم بيتشال من محتوى الدرس — فالفيديو يتعرض من الوحدة بمقاس مظبوط ومن غير تكرار.
- نسخة أصلية وتراجع: محتوى كل درس بيتحفظ قبل التعديل، وفيه جدول تراجع بيرجّع المحتوى والرابط زي ما كانوا.
- تحديد انتقائي: دروس الدرايف محدّدة تلقائيًا، ودروس اليوتيوب سايبها لك تختار، مع خيار استبدال الروابط المحفوظة بالفعل.
إصلاح مهم: منع الـ pop out كان مش شغّال أصلًا داخل الكورس
تنسيق طبقة الحماية كان بيتحمّل بشرط is_singular('lp_lesson')، بينما LearnPress بيعرض الدرس على رابط الكورس /courses/…/lessons/… واللي بيرجّع الكورس نفسه — يعني التنسيق مكانش بيتحمّل والطبقة كانت بدون أبعاد وزرار جوجل درايف شغّال. دلوقتي التنسيق بيتطبع مع الفيديو نفسه، فالحماية شغّالة في أي سياق عرض، وكمان بتغطّي الدروس اللي لسه فيها آيفريم قديم في المحتوى.
5.1.0 · 2026-08-03
وحدة جديدة: البريد (SMTP)
رسائل الموقع بقت تعدّي على سيرفر بريد حقيقي بدل mail() بتاعة PHP — يعني إشعارات الطلبات وأكواد التفعيل واستعادة كلمة المرور توصل فعلًا بدل ما تقع في السبام.
- ربط بضغطة: أكتر من ٣٠ مزوّد جاهز (Gmail، Microsoft 365، Zoho، Brevo، SendGrid، Mailgun، Mailjet، Postmark، Resend، Amazon SES، Hostinger، Namecheap، IONOS وغيرهم) — تدوس على المزوّد فالسيرفر والبورت ونوع التشفير بيتظبطوا لوحدهم، ومايفضلش عليك غير اسم المستخدم وكلمة المرور.
- بحث فوري في قائمة المزوّدين، وتلميحة لكل واحد بتقول المطلوب منه بالظبط (زي إن Gmail عايز App Password وإن SendGrid اسم مستخدمه حرفيًا
apikey). - إعداد يدوي لأي سيرفر مش في القائمة.
- كلمة المرور بتتخزّن مشفّرة بمفتاح مشتق من أملاح الموقع — مش نص صريح في قاعدة البيانات، فمابتتقريش من باكب ولا تصدير.
- رسالة اختبار بتعرض حوار SMTP كامل لما تفشل، فتعرف السيرفر رفض ليه بالظبط بدل ما تخمّن. بيانات الدخول بتتحجب من الحوار.
- سجل للبريد: كل رسالة (نجحت ولا فشلت) بالمستقبِل والموضوع وسبب الفشل، بتنظيف تلقائي بعد مدة تحددها.
- تحكّم في المرسل: بريد واسم المرسل و Reply-To و Return-Path، مع خيار فرضهم على كل رسائل الموقع.
- قابل للقفل من السيرفر: تعريف
MIRROR_SMTP_HOSTوأخواتها فيwp-config.phpبيغلب المحفوظ في اللوحة.
مركز التفعيل والتحديثات
- الإضافة بقت تكلّم
license.mirrororg.com— دومين مستقل للمركز بدل مسار على المتجر. النسخ القديمة لسه شغّالة على العنوان القديم من غير ما تعمل حاجة.
5.0.0 · 2026-08-03
مركز الحماية — وحدة جديدة بالكامل
- قفل محاولات الدخول: عدّ المحاولات لكل عنوان، قفل متدرّج (قفل أطول مع التكرار)، تأخير عند الفشل، رسالة خطأ موحّدة، منع اسم المستخدم admin، قوائم بيضاء وسوداء بالعنوان أو بالبادئة، وتنبيه بالإيميل.
- صفحة الدخول: رابط دخول مخصّص (wp-login.php بيرجّع 404)، فرض كلمة مرور قوية، قفل استعادة كلمة المرور للمديرين، وخروج تلقائي عند السكون.
- تحقق بخطوتين: كود على الإيميل أو تطبيق مصادقة (TOTP متوافق مع Google Authenticator)، أكواد طوارئ مهشّمة، تذكّر الجهاز، ومهلة تجهيز للمستخدم الجديد.
- سجل النشاط: الدخول والخروج والمحاولات الفاشلة، المستخدمون والأدوار، الإضافات والقوالب، المحتوى، الإعدادات المهمّة، وطلبات وكوبونات ووكومرس — مع بحث وتصفية وتنظيف تلقائي.
- فحص سلامة الملفات: مقارنة نواة ووردبريس ببصمات wordpress.org الرسمية، خط أساس محلي للإضافات والقوالب بيكشف أي ملف اتغيّر أو اتزاد أو اتشال، وكشف ملفات PHP المشبوهة في مجلد الرفع — بتقرير في اللوحة وإيميل.
- رؤوس الأمان: HSTS و X-Frame-Options و X-Content-Type-Options و Referrer-Policy و Permissions-Policy وترقية الطلبات لـHTTPS.
- ضبط REST API: قفل تعداد المستخدمين، أو قفل الواجهة كلها على الزوّار مع قائمة مسارات مسموح بيها.
- حماية ووكومرس: حد لمحاولات الدفع لكل عنوان (ضد اختبار البطاقات المسروقة)، حد لتخمين الكوبونات، قفل صفحة الطلب من غير مفتاحها، تنزيلات للمسجّلين بس، قفل بيانات العملاء في REST، وحد أدنى لزمن إرسال الطلب ضد البوتات.
صمامات أمان
ملف فاضي اسمه wp-content/mirror-unlock (أو الثابت MIRROR_SECURITY_OFF) بيوقف كل الأقفال والتحقق بخطوتين فورًا، وعنوان المدير اللي بيحفظ الإعدادات بيتحط في القائمة البيضاء تلقائيًا. مافيش حالة بتقفل صاحب الموقع بره موقعه.
التفعيل والتحديثات
الإضافة بقت متربوطة بمركز MirrorORG: تفعيل بكود، وتحديثات تلقائية في لوحة ووردبريس زي أي إضافة. وحدات الحماية بتفضل شغّالة حتى من غير تفعيل — عشان الموقع مايتسابش مكشوف — والتفعيل بيفتح التحديثات والدعم. الوضع الصارم متاح بالثابت MPS_LICENSE_STRICT.