امنیت و هاردنینگ (Security) Filter Hook (rest_authentication_errors) پلتفرم: wordpress متوسط (Medium) سطح ریسک: متوسط (Medium Risk)

محدود کردن دسترسی به REST API برای کاربران مهمان در وردپرس (Restrict REST API)

تست‌شده و بازبینی‌شده در 1405/06/29 ۴۷۰ بار کپی ۱۹۷۲ مشاهده
پاسخ سریع و خلاصه کاربردی (Quick Answer)

با فیلتر `rest_authentication_errors`، کاربرانی که لاگین نکرده‌اند را با خطای ۴۰۱ یا WP_Error مسدود کنید.

مشخصات فنی و شناسنامه کد (Code Information)

بازبینی: 1405/06/29
پلتفرم اجرایی (Platform) wordpress
نوع کد (Code Type) Filter Hook (rest_authentication_errors)
محل قرارگیری فایل (Location) functions.php
سطح دشواری (Difficulty) متوسط (Medium)
سطح ریسک (Risk Level) متوسط (Medium Risk)
نیاز به بکاپ اولیه؟ بله، حتماً بکاپ بگیرید
سازگاری با وردپرس تمامی نسخه‌های وردپرس
سازگاری با ووکامرس و HPOS سازگار
هشدار ایمنی: این تغییر مستقیماً فایل‌های حساس سرور یا دیتابیس را ویرایش می‌کند. حتماً پیش از ذخیره کد از وب‌سایت یا فایل مورد نظر فایل پشتیبان (Backup) تهیه کنید.
|
<?php
/**
 * محدودسازی دسترسی به REST API تنها برای کاربران وارد شده به سایت
 */
function bisco_restrict_rest_api_to_logged_in_users( $access ) {
    // در صورت وجود خطای قبلی، همان خطا بازگردانده شود
    if ( is_wp_error( $access ) ) {
        return $access;
    }

    // اگر کاربر وارد نشده بود، دسترسی مسدود گردد
    if ( ! is_user_logged_in() ) {
        return new WP_Error(
            'rest_cannot_access',
            'دسترسی به رابط برنامه‌نویسی تنها برای کاربران احراز هویت شده مجاز است.',
            array( 'status' => rest_authorization_required_code() )
        );
    }

    return $access;
}
add_filter( 'rest_authentication_errors', 'bisco_restrict_rest_api_to_logged_in_users' );

کد را کجا قرار دهیم؟ (Placement Guide)

کد را در functions.php قرار دهید.

مسیر فایل: functions.php

این کد چگونه کار می‌کند؟ (How it Works)

هسته وردپرس در زمان راه‌اندازی هر درخواست REST این فیلتر را اعتبارسنجی می‌کند؛ اگر کاربر کوکی یا توکن معتبر نداشته باشد، پاسخ خطای HTTP 401 Unauthorized برگردانده می‌شود.

چه زمانی از این کد استفاده کنیم؟ (Use Cases)

در وب‌سایت‌های شرکتی، خبری و وبلاگی که اپلیکیشن موبایل عمومی وابسته به متدهای عمومی REST ندارند.

چه زمانی نباید از این کد استفاده کنیم؟ (Anti-patterns)

در سایت‌های با فرانت‌انت هدلس (Headless WP با Next.js) یا سایت‌هایی که از فرم‌های ایجکس مبتنی بر REST عمومی استفاده می‌کنند.

پیش‌نیازهای اجرا

وردپرس ۴.۷ به بالا.

نحوه تست و اطمینان از عملکرد

در حالت ناشناس مرورگر آدرس https://site.com/wp-json/wp/v2/users را باز کنید؛ باید خطای ۴۰۱ و پیام منع دسترسی نمایش داده شود.

نحوه بازگردانی سریع (Rollback)

فیلتر را حذف کنید.

خطاهای رایج و راه‌حل رفع

قفل کردن اشتباهی پیشخوان ادمین (این کد چون شرط is_user_logged_in دارد، به محض ورود ادمین دسترسی ویرایشگر گوتنبرگ بدون باگ کار می‌کند).

ملاحظات و نکات امنیتی

جلوگیری کامل از حملات Enumeration نام‌های کاربری و اسکنرهای نفوذ.

تاثیر بر سرعت و پرفورمنس

کاهش مصرف منابع ناشی از ربات‌های کاوشگر اندپوینت‌های json.

پرسش‌های متداول پیرامون این کد (FAQ)

خیر، چون مدیر سایت حین استفاده از ویرایشگر لاگین است و دسترسی او باز می‌ماند.
منابع و مستندات رسمی بررسی‌شده (Official Sources):

سبد خرید شما

0 افزونه

سبد خرید شما خالی است

هنوز محصولی را به سبد خرید اضافه نکرده‌اید. می‌توانید از افزونه‌های اختصاصی ما دیدن فرمایید.

مشاهده فروشگاه افزونه‌ها

ثبت درخواست مشاوره

با تکمیل فرم زیر، کارشناسان فنی بیسکو وب در سریع‌ترین زمان ممکن با شما تماس می‌گیرند.

مشاور
پشتیبانی و مشاوره تخصصی
پاسخگویی سریع کارشناسان
09903336117