پرش به مطلب اصلی

تغییرات لاگ Captcha

نسخه: 1.5.0 - تاریخ انتشار: 2026-05-22

  • جدید: محدودکننده نرخ (Rate Limiter) با توقف سخت — هر درخواست GET و POST را که روی صفحات محافظت شده توسط Captcha (wp-login / register / lost-password / comments، WooCommerce my-account / checkout / pay-for-order، Ultimate Multisite checkout / inline-login) رخ می‌دهد، شمارش می‌کند و با کد وضعیت HTTP 429، یک هدر Retry-After، و یک خواباندن تصادفی (tarpit sleep) (۱ تا ۵ ثانیه، با سقف ۱5 ثانیه) پاسخ می‌دهد.
  • جدید: تنظیمات cap_rate_limit_tarpit_min / cap_rate_limit_tarpit_max برای تنظیم پنجره خواباندن (tarpit window).
  • جدید: فیلتر wu_cap_rate_limit_whitelist_ip برای معاف کردن محدوده‌های IP مورد اعتماد.
  • جدید: اکشن wu_cap_rate_limit_will_block که بلافاصله قبل از ارسال پاسخ توقف سخت (hard-stop response) فعال می‌شود.
  • جدید: تشخیص آدرس IP کلاینت مقاوم در برابر جعل (Spoof-resistant). تابع Captcha_Core::get_client_ip() (منبع اصلی کلیدهای سطل محدودکننده نرخ، remoteip سایت‌تایید Captcha، و هش‌های IP آمار) اکنون یک مدل اعتماد سخت‌گیرانه اعمال می‌کند: REMOTE_ADDR حداقل است، CF-Connecting-IP تنها زمانی مورد احترام قرار می‌گیرد که همتای فوری در محدوده IP فعلی Cloudflare باشد، و X-Forwarded-For تنها زمانی مورد احترام قرار می‌گیرد که همتای فوری در لیست پروکسی‌های مورد اعتماد تنظیم شده توسط ادمین باشد، و با پیمایش از راست به چپ، پرش‌های مورد اعتماد/CF را نادیده گرفته و سپس روی IP بازدیدکننده متوقف می‌شود.
  • جدید: تنظیم cap_trust_cloudflare_headers (پیش‌فرض خاموش) — برای استفاده از اعتماد به CF-Connecting-IP زمانی که پشت Cloudflare هستید، این گزینه را فعال کنید. این پلاگین یک快‌نمای (snapshot) CIDR Cloudflare بسته‌بندی شده را همراه دارد و آن را هر هفته از طریق wp-cron با یک fallback بسته‌بندی شده در صورت شکست به‌روزرسانی، رفرش می‌کند.
  • جدید: تنظیم cap_trusted_proxies — یک ناحیه متنی (textarea) برای CIDRها یا IPهای خام (یکی در هر خط، کامنت‌های # مجاز است) که پروکسی‌ها/Load-balancerهای خط مقدم شما را لیست می‌کند. بدون این تنظیم، X-Forwarded-For حتی زمانی که محدودکننده نرخ فعال است، نادیده گرفته می‌شود.
  • جدید: تشخیص خودکار اولیه وضعیت احتمالی Cloudflare / پروکسی با یک اعلان ادمین "اعمال تنظیمات شناسایی شده". این پلاگین هرگز مقادیر ذخیره شده شما را بازنویسی نمی‌کند؛ اگر ترافیک بعدی نشان دهد که پیکربندی شما دیگر با واقعیت مطابقت ندارد (مثلاً Cloudflare محدوده‌های CIDR خود را تغییر داده و CIDR پروکسی شما قدیمی شده است)، یک اعلان عدم تطابق غیرقابل نادیده گرفتن، به‌روزرسانی پیشنهادی را نمایش می‌دهد.
  • ثابت شده: حالت نامرئی دیگر به طور پیش‌فرض cap_security_level را به FAST کاهش نمی‌دهد — سطح پیکربندی شده توسط ادمین رعایت می‌شود. یک فیلتر جدید به نام wu_cap_server_security_level برای سایت‌هایی که منطق سفارشی‌سازی شده می‌خواهند، در دسترس است.
  • ثابت شده: شمارنده آمار rate_limits_triggered اکنون در هر مسدودسازی افزایش می‌یابد، نه فقط در مسیر پس‌پرسیار نادر پس از موفقیت.
  • ثابت شده: Captcha_Core::get_client_ip() اکنون منبع واحد حقیقت برای انتساب IP بازدیدکننده در سراسر محدودکننده نرخ، ارائه‌دهندگان Captcha (reCAPTCHA + hCaptcha siteverify) و آمار است — این کار یک مسیر جعل را مسدود می‌کند که در آن درخواست‌های مستقیم سرور مبدأ با هدر جعلی CF-Connecting-IP، به جای سطل همتای واقعی، توسط IP جعل شده شمارش می‌شدند.
  • ثابت شده: دروازه محدودکننده نرخ خروج کلاسیک WooCommerce اکنون به جای woocommerce_before_checkout_form، روی template_redirect (اولویت ۱) فعال می‌شود. هوک سطح فرم هرگز زمانی که سبد خرید خالی است، فعال نمی‌شود، بنابراین ترافیک سیل‌آور که هرگز محصولی اضافه نمی‌کند، کاملاً از محدودکننده دور می‌شد.
  • ثابت شده: دروازه محدودکننده نرخ پرداخت WooCommerce اکنون به جای woocommerce_before_pay_action، روی template_redirect فعال می‌شود. مورد دوم فقط پس از موفقیت wp_verify_nonce('woocommerce-pay') فعال می‌شود، به این معنی که مهاجمان غیرمجاز (مدل تهدید واقعی) هرگز محدودکننده را فعال نمی‌کردند.
  • ثابت شده: دروازه محدودکننده نرخ خروج WooCommerce Store API (blocks) اکنون به جای woocommerce_store_api_checkout_update_order_from_request، روی rest_pre_dispatch فعال می‌شود. مورد دوم فقط پس از اینکه Store API سبد خرید و فیلدهای صورت‌حساب را اعتبارسنجی کرد، فعال می‌شود، بنابراین ربات‌های غیرمجاز یک ۴۰۰ از اعتبارسنج‌کننده دریافت می‌کردند و هرگز محدودکننده را فعال نمی‌کردند.
  • ثابت شده: دروازه محدودکننده نرخ خروج inline-login Ultimate Multisite اکنون به جای wu_before_inline_login، روی wu_ajax_nopriv_wu_inline_login با اولویت ۱ (و آینه لاگین شده) فعال می‌شود. مورد دوم فقط پس از موفقیت check_ajax_referer('wu_checkout') فعال می‌شود، بنابراین ربات‌های غیرمجاز بدون یک nonce معتبر wu_checkout، یک ۴۰۳ دریافت می‌کردند و هرگز محدودکننده را فعال نمی‌کردند.
  • ثابت شده: Rate_Limiter::enforce() اکنون یک محافظ "یک بار در هر درخواست" را با کلید surface|ip اعمال می‌کند، بنابراین هوک‌های بالادستی که در هر رندر دو بار فعال می‌شوند (به ویژه wu_setup_checkout در Ultimate Multisite)، دیگر آستانه مؤثر محدودکننده نرخ را نصف نمی‌کنند.
  • ثابت شده: دروازه‌های سطح محدودکننده نرخ دیگر Captcha_Core::is_whitelisted() (wu_captcha_whitelisted filter) را بررسی نمی‌کنند. این فیلتر سیگنال می‌دهد که "Captcha توسط سطح دیگری مدیریت شده است" و مستقل از حفاظت سیل‌آور است — یکپارچه‌سازی WooCommerce آن را برای دور زدن Captcha ورود WordPress زمانی که یک nonce Woo وجود داشت، هوک کرده بود، که باعث نشت به شمارش نرخ شد و اجازه داد POSTهای Woo از محدودکننده دور بمانند. تنها فیلتر wu_cap_rate_limit_whitelist_ip مخصوص محدودکننده نرخ است که اکنون اعمال می‌شود.

نسخه: 1.3.2 - تاریخ انتشار: 2026-01-27

  • ثابت شده: ویجت Captcha روی فرم‌های خروج که از Elementor یا سایر Page Builder استفاده می‌کنند، رندر نمی‌شد.
  • ثابت شده: عنصر سفارشی cap-widget توسط پاک‌کننده (sanitization) wp_kses() حذف می‌شد.
  • بهبود یافته: استفاده از محتوای قابل فراخوانی (callable content) برای فیلد Captcha خروج جهت دور زدن فیلتر HTML.
  • بهبود یافته: ساده‌سازی JavaScript با fallback برای موارد لبه‌ای.

نسخه: 1.3.1 - تاریخ انتشار: 2026-01-26

  • ثابت شده: حالت نامرئی Captcha در فرم‌های خروج پویا Ultimate Multisite به صورت خودکار حل نمی‌شد.
  • بهبود یافته: اسکریپت خروج Captcha اکنون از MutationObserver برای تشخیص ویجت‌های بارگذاری شده پویا استفاده می‌کند.
  • بهبود یافته: رهگیری دکمه خروج اضافه شد تا قبل از ارسال، منتظر توکن بماند.

نسخه: 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 (کتابخانه PHP google/recaptcha اضافه شد).
  • بهبود یافته: تشخیص خطا از طریق هوک‌های WordPress، MutationObserver و رهگیری AJAX.
  • بهبود یافته: توضیحات تنظیمات اکنون شامل URLهای داشبورد برای کلیدهای API هستند.

نسخه: 1.2.2 - تاریخ انتشار: 2026-01-24

  • ثابت شده: Captcha روی عنصر فرم ورود Ultimate Multisite نمایش داده نمی‌شد (نام عدم تطابق فیلتر).
  • ثابت شده: HTML ویجت Cap توسط پاک‌کننده wp_kses() حذف می‌شد.
  • ثابت شده: سلکتورهای JavaScript فرم‌هایی را پیدا نمی‌کردند که در ID عناصر شامل اسلش بودند.
  • اضافه شده: هوک فیلتر wu_kses_allowed_html برای classaddons جهت گسترش تگ‌های HTML مجاز.
  • حذف شده: فایل‌های JavaScript کد مرده با اسکریپت‌های مخصوص ارائه‌دهنده جایگزین شدند.

نسخه: 1.2.1 - تاریخ انتشار: 2026-01-23

  • ثابت شده: اعتبارسنجی توکن Captcha در محیط‌های multisite شکست می‌خورد (اکنون از transients در سطح شبکه استفاده می‌کند).
  • ثابت شده: Captcha اکنون برای همه کاربران، صرف نظر از وضعیت ورود، به طور مداوم رندر می‌شود.
  • ثابت شده: عدم تطابق بین رندر و اعتبارسنجی Captcha که باعث شکست‌های خروج می‌شد.

نسخه: 1.2.0 - تاریخ انتشار: 2026-01-21

  • جدید: Cap Captcha - Captcha اثبات کار (proof-of-work) میزبانی شده، که به طور پیش‌فرض هنگام فعال‌سازی فعال می‌شود.
  • جدید: حفاظت با پیکربندی صفر - افزونه را فعال کنید و بلافاصله محافظت خواهید شد.
  • جدید: معماری ارائه‌دهنده Captcha چندریختی (Polymorphic) برای قابلیت توسعه آسان.
  • جدید: حفاظت خروج WooCommerce Store API در برابر حملات تست کارت.
  • جدید: داشبورد ردیابی آمار که چالش‌ها، تأییدیه‌ها و حملات مسدود شده را نشان می‌دهد.
  • جدید: پیش‌تنظیمات سطح امنیتی (Fast, Medium, Max) برای دشواری Cap Captcha.
  • جدید: کلاس‌های پایه انتزاعی برای ارائه‌دهندگان reCAPTCHA و hCaptcha.
  • بهبود یافته: بازسازی کد پایه به کلاس‌های ارائه‌دهنده ماژولار.
  • بهبود یافته: جداسازی بهتر وظایف با کلاس مدیر (manager class) اختصاصی.
  • ثابت شده: بهبودهای امنیتی برای پاک‌سازی متغیر $_SERVER.
  • ثابت شده: پیکربندی تست PHPUnit برای قراردادهای نام‌گذاری WordPress.

نسخه: 1.0.1 - تاریخ انتشار: 2025-09-28

  • تغییر پیشوند به ultimate-multisite؛ به‌روزرسانی دامنه متن؛ افزایش نسخه.