سجل تغييرات Captcha
الإصدار: 1.5.0 - صدر في 2026-05-22
- جديد: محدِّد معدّل بإيقاف صارم — يحسب كل طلب GET وPOST على الأسطح المحمية بـ captcha (wp-login / register / lost-password / التعليقات، WooCommerce my-account / checkout / pay-for-order، Ultimate Multisite checkout / inline-login) ويردّ بـ HTTP 429، و
Retry-Afterheader، وسكون tarpit عشوائي (1–5 ثوانٍ، بحد أقصى صارم 15 ثانية). - جديد: إعدادات
cap_rate_limit_tarpit_min/cap_rate_limit_tarpit_maxلضبط نافذة tarpit. - جديد: فلتر
wu_cap_rate_limit_whitelist_ipلاستثناء نطاقات IP الموثوقة. - جديد: إجراء
wu_cap_rate_limit_will_blockيتم تشغيله مباشرة قبل إرسال استجابة الإيقاف الصارم. - جديد: اكتشاف IP العميل المقاوم للانتحال. أصبح
Captcha_Core::get_client_ip()(مصدر الحقيقة لمفاتيح حِزم تحديد المعدّل، وcaptcha siteverifyremoteip، وتجزئات IP للإحصاءات) يفرض الآن نموذج ثقة صارمًا: REMOTE_ADDR هو الحد الأدنى، ولا يتم اعتمادCF-Connecting-IPإلا عندما يكون النظير المباشر داخل نطاق IP حالي لـ Cloudflare، ولا يتم اعتمادX-Forwarded-Forإلا عندما يكون النظير المباشر ضمن قائمة الوكلاء الموثوقين المضبوطة من المدير، مع سير من اليمين إلى اليسار يتجاوز قفزات موثوقة/CF قبل الاستقرار على IP الزائر. - جديد: إعداد
cap_trust_cloudflare_headers(افتراضيًا OFF) — للاشتراك في الثقة بـCF-Connecting-IPعند العمل خلف Cloudflare. يشحن plugin لقطة Cloudflare CIDR مضمّنة ويحدّثها أسبوعيًا عبر wp-cron مع رجوع إلى النسخة المضمّنة إذا فشل التحديث. - جديد: إعداد
cap_trusted_proxies— منطقة نصية لـ CIDR أو عناوين IP مجردة (واحد في كل سطر، مع السماح بتعليقات#) تسرد وكلاءك الأماميين / موازنات التحميل الخاصة بك. بدون هذا، يتم تجاهلX-Forwarded-Forحتى عندما يكون محدِّد المعدّل مفعّلًا. - جديد: كشف تلقائي عند التفعيل الأول لوضعية Cloudflare / الوكيل المحتملة مع إشعار إداري بنقرة واحدة "طبّق الإعدادات المكتشفة". لا يقوم plugin أبدًا بالكتابة فوق قيمك المحفوظة؛ وإذا أشارت حركة المرور اللاحقة إلى أن إعداداتك لم تعد تطابق الواقع (مثلًا تغيّرت نطاقات CIDR لـ Cloudflare وأصبح CIDR الوكيل لديك قديمًا)، يظهر إشعار عدم تطابق غير قابل للإخفاء يعرض التحديث الموصى به.
- تم الإصلاح: لم يعد الوضع غير المرئي يخفض
cap_security_levelبصمت إلى FAST — بل يتم احترام المستوى الذي ضبطه المدير. يتوفر فلترwu_cap_server_security_levelجديد للمواقع التي تريد منطقًا مخصصًا. - تم الإصلاح: أصبح عدّاد الإحصاءات
rate_limits_triggeredيزداد الآن عند كل حظر، وليس فقط في مسار backstop النادر بعد النجاح. - تم الإصلاح: أصبح
Captcha_Core::get_client_ip()الآن مصدر الحقيقة الوحيد لنَسب IP الزائر عبر محدِّد المعدّل، ومزوّدي captcha (reCAPTCHA + hCaptchasiteverify)، والإحصاءات — مما يغلق متجه انتحال كانت فيه الطلبات المباشرة إلى خادم الأصل التي تحملCF-Connecting-IPheader مزوّرًا ستُدرج في حزمة وفق IP المنتحل بدلًا من النظير الحقيقي. - تم الإصلاح: أصبحت بوابة تحديد المعدّل في checkout الكلاسيكي لـ WooCommerce تعمل الآن على
template_redirect(الأولوية 1) بدلًا منwoocommerce_before_checkout_form. لا يعمل الخطاف على مستوى النموذج أبدًا عندما تكون السلة فارغة، لذا كانت حركة الإغراق التي لا تضيف منتجًا أبدًا تتجاوز المحدِّد بالكامل. - تم الإصلاح: أصبحت بوابة تحديد المعدّل لـ WooCommerce pay-for-order تعمل الآن على
template_redirectبدلًا منwoocommerce_before_pay_action. فالأخير لا يعمل إلا بعد نجاحwp_verify_nonce('woocommerce-pay')، ما يعني أن ال مهاجمين غير المصادقين (نموذج التهديد الفعلي) لم يكونوا يفعّلون المحدِّد أبدًا. - تم الإصلاح: أصبحت بوابة تحديد المعدّل في checkout لـ WooCommerce Store API (blocks) تعمل الآن على
rest_pre_dispatchبدلًا منwoocommerce_store_api_checkout_update_order_from_request. فالأخير لا يعمل إلا بعد أن يتحقق Store API من السلة وحقول الفوترة، لذا كانت الروبوتات غير المصادقة تحصل على 400 من المدقق ولا تُفعّل المحدِّد أبدًا. - تم الإصلاح: أصبحت بوابة تحديد المعدّل لـ Ultimate Multisite inline-login تعمل الآن على
wu_ajax_nopriv_wu_inline_loginبالأولوية 1 (ومرآة المسجّلين دخولهم) بدلًا منwu_before_inline_login. فالأخير لا يعمل إلا بعد نجاحcheck_ajax_referer('wu_checkout')، لذا كانت الروبوتات غير المصادقة من دون wu_checkout nonce صالح تحصل على 403 ولا تُفعّل المحدِّد أبدًا. - تم الإصلاح: أصبح
Rate_Limiter::enforce()يطبّق الآن حارسًا مرة واحدة لكل طلب بمفتاحsurface|ip، لذا لم تعد الخطافات العلوية التي تعمل مرتين في كل تصيير (خصوصًاwu_setup_checkoutفي Ultimate Multisite) تُنقص عتبة تحديد المعدّل الفعلية إلى النصف. - تم الإصلاح: لم تعد بوابات أسطح تحديد المعدّل تستشير
Captcha_Core::is_whitelisted()(فلترwu_captcha_whitelisted). يشير ذلك الفلتر إلى أن "captcha تمت معالجته بالفعل بواسطة سطح آخر" وهو منفصل عن الحماية من الإغراق — كان تكامل WooCommerce يربطه لتخطي captcha تسجيل الدخول في WordPress عند وجود Woo nonce، مما تسرّب إلى عدّ المعدّل وسمح لطلبات Woo POST بتجنب المحدِّد. فلترwu_cap_rate_limit_whitelist_ipالمخصص لتحديد المعدّل هو التجاوز الوحيد الذي ينطبق الآن.
الإصدار: 1.3.2 - صدر في 2026-01-27
- تم الإصلاح: عدم تصيير أداة Cap على نماذج checkout التي تستخدم Elementor أو بناة صفحات آخرين
- تم الإصلاح: تجريد العنصر المخصص cap-widget بواسطة تنقية wp_kses()
- تم التحسين: استخدام محتوى قابل للاستدعاء لحقل captcha في checkout لتجاوز ترشيح HTML
- تم التحسين: تبسيط JavaScript مع آلية رجوع للحالات الطرفية
الإصدار: 1.3.1 - صدر في 2026-01-26
- تم الإصلاح: وضع Cap Captcha غير المرئي لا يحل تلقائيًا على نماذج checkout الديناميكية في Ultimate Multisite
- تم التحسين: أصبح سكربت checkout الخاص بـ Cap يستخدم MutationObserver لاكتشاف الأدوات المحمّلة ديناميكيًا
- تم التحسين: تمت إضافة اعتراض زر checkout للانتظار إلى حين توفر token قبل الإرسال
Version: 1.3.0 - تم إصداره في 2026-01-27
- جديد: تكامل صفحة الدفع WooCommerce Blocks مع اعتراض جلب Store API
- جديد: دعم captcha غير المرئي لصفحة دفع WooCommerce (hCaptcha غير مرئي، reCAPTCHA v2 غير مرئي، v3)
- جديد: صفحة إعدادات مستقلة للاستخدام بدون Ultimate Multisite
- جديد: Jetpack Autoloader لمنع تعارضات الاعتماديات
- تم الإصلاح: عدم عرض hCaptcha في صفحة دفع Ultimate Multisite الديناميكية (محتوى محمّل عبر AJAX)
- تم الإصلاح: عدم تحديث/إعادة ضبط Captcha عند حدوث أخطاء في التحقق من صحة النموذج
- تم الإصلاح: عدم ظهور hCaptcha في صفحة دفع WooCommerce
- تم الإصلاح: خطأ عدم العثور على صنف reCAPTCHA (تمت إضافة مكتبة google/recaptcha PHP)
- تم التحسين: اكتشاف الأخطاء عبر خطافات WordPress وMutationObserver واعتراض AJAX
- تم التحسين: أوصاف الإعدادات تتضمن الآن عناوين URL للوحة التحكم الخاصة بمفاتيح API
Version: 1.2.2 - تم إصداره في 2026-01-24
- تم الإصلاح: عدم عرض Captcha في عنصر نموذج تسجيل الدخول Ultimate Multisite (عدم تطابق اسم مرشح النموذج)
- تم الإصلاح: كان يتم تجريد HTML لأداة Cap بواسطة تنقية wp_kses()
- تم الإصلاح: محددات JavaScript لا تعثر على النماذج التي تحتوي معرفات عناصرها على شرطات مائلة
- تمت الإضافة: خطاف المرشح
wu_kses_allowed_htmlمن أجل classaddons لتوسيع وسوم HTML المسموح بها - تمت الإزالة: ملفات JavaScript غير المستخدمة التي استُبدلت بسكربتات خاصة بالمزوّدين
Version: 1.2.1 - تم إصداره في 2026-01-23
- تم الإصلاح: فشل التحقق من صحة رمز Cap Captcha في بيئات المواقع المتعددة (يستخدم الآن transients على مستوى الشبكة)
- تم الإصلاح: يتم الآن عرض Captcha بشكل متسق لجميع المستخدمين بغض النظر عن حالة تسجيل الدخول
- تم الإصلاح: عدم التطابق بين عرض captcha والتحقق منها الذي تسبب في فشل الدفع
Version: 1.2.0 - تم إصداره في 2026-01-21
- جديد: Cap Captcha - captcha مستضافة ذاتيًا تعتمد على إثبات العمل، مفعّلة افتراضيًا عند التفعيل
- جديد: حماية بدون إعدادات - فعّل الإضافة وستكون محميًا فورًا
- جديد: بنية مزوّد captcha متعددة الأشكال لسهولة التوسعة
- جديد: حماية صفحة دفع WooCommerce Store API ضد هجمات اختبار البطاقات
- جديد: لوحة إحصاءات تعرض التحديات وعمليات التحقق والهجمات المحظورة
- جديد: إعدادات مسبقة لمستوى الأمان (سريع، متوسط، أقصى) لصعوبة Cap Captcha
- جديد: أصناف أساس مجردة لمزوّدي reCAPTCHA وhCaptcha
- تم التحسين: إعادة هيكلة قاعدة الشفرة إلى أصناف مزوّد معيارية
- تم التحسين: فصل أفضل للمسؤوليات باستخدام صنف مدير مخصص
- Fixed: Security improvements for $_SERVER variable sanitization
- تم الإصلاح: إعداد اختبارات PHPUnit لاصطلاحات تسمية WordPress
Version: 1.0.1 - تم إصداره في 2025-09-28
- إعادة تسمية البادئة إلى ultimate-multisite؛ تحديث نطاق النص؛ رفع الإصدا ر.