غیرفعال کردن REST API وردپرس: راهنمای جامع علمی برای امنیت و بهینهسازی
وردپرس به عنوان یکی از محبوبترین سیستمهای مدیریت محتوا در جهان، قابلیتهای پیشرفته زیادی دارد. یکی از این ویژگیهای کلیدی که از نسخه ۴.۷ به هسته اصلی اضافه شد، REST API است. این ابزار به برنامهنویسان اجازه میدهد تا با استفاده از درخواستهای JSON با سایت شما ارتباط برقرار کنند. اما سوال اصلی این است: آیا همه سایتها به این قابلیت نیاز دارند؟ خیر! در بسیاری از مواقع، باز بودن این درگاه میتواند خطرات امنیتی ایجاد کند یا منابع سرور شما را هدر دهد. در این راهنمای جامع، یاد میگیرید که چطور REST API وردپرس را به روشهای اصولی، بدون اختلال در عملکرد سایت، محدود یا کلا غیرفعال کنید.
نقشه راه سریع مدیریت REST API وردپرس
لو رفتن نامهای کاربری و اسکن اسکریپتهای مخرب از آدرس wp-json/wp/v2/users
غیرفعالسازی کامل برای سایتهای ساده یا محدودسازی به کاربران واردشده.
افزودن قطعه کد به functions.php یا نصب افزونه Disable REST API
بررسی سلامت ویرایشگر گوتنبرگ و عدم تداخل در فرمها و اپلیکیشنها
برای غیرفعال کردن سریع REST API برای کاربران مهمان، افزونه رایگان Disable REST API را نصب کنید یا قطعه کد زیر را به فایل functions.php قالب خود اضافه نمایید. این کار باعث میشود کاربران احراز هویتنشده خطای ۴۰۱ دریافت کنند، اما ویرایشگر گوتنبرگ و پیشخوان مدیریت بدون مشکل به کار خود ادامه دهند.
- REST API وردپرس چیست و چه کاربردی دارد؟
- چرا باید REST API وردپرس را غیرفعال یا محدود کنیم؟
- چه زمانی نباید REST API را کاملاً غیرفعال ساخت؟
- روشهای غیرفعال کردن REST API (با کد و افزونه)
- جدول مقایسه روشهای مدیریت REST API
- عیبیابی سریع (Troubleshooting) بعد از غیرفعالسازی
- سوالات متداول (FAQ)
REST API وردپرس چیست و چه کاربردی دارد؟

به زبان ساده، REST API رابطی است که به برنامههای خارجی اجازه میدهد با وردپرس ارتباط برقرار کنند. این ارتباط با ارسال و دریافت دادهها بر پایه فرمت JSON انجام میشود. به عنوان مثال، اگر یک اپلیکیشن موبایل برای سایت خود ساختهاید، این اپلیکیشن از طریق REST API اطلاعت محصولات یا مقالات را از وبسایت شما میخواند.
همچنین ویرایشگر جدید وردپرس (گوتنبرگ) برای ذخیرهسازی پیشنویسها، بروزرسانی نوشتهها و دریافت اطلاعات در پیشخوان، اتکای زیادی به این ساختار دارد. با این حال، به صورت پیشفرض این مسیر بدون محدودیت خاصی برای عموم باز است که میتواند ریسکهای امنیتی ایجاد کند.
چرا باید REST API وردپرس را غیرفعال یا محدود کنیم؟

اگر سایت شما یک وبلاگ شرکتی، مجله خبری یا وبسایت ساده است و هیچ اپلیکیشن یا ارتباط خارجی ندارد، باز بودن REST API لزومی ندارد. دلایل اصلی برای بستن یا محدود کردن آن عبارتند از:
- افشای نام کاربری مدیران (User Enumeration): هکرها با وارد کردن آدرس
yoursite.com/wp-json/wp/v2/usersمیتوانند فهرست تمام نویسندگان و مدیران سایت همراه با شناسه (ID) آنها را ببینند. این کار اولین قدم برای حملات Bruteforce است. برای تقویت امنیت کلی میتوانید از راهکارهای مربوط به امنیتی بخش مدیریت وردپرس استفاده کنید. - حملات منع خدمت (DDoS) و مصرف شدید منابع: رباتهای هکر مدام مسیرهای REST API را فرامیخوانند. این درخواستهای متعدد باعث درگیر شدن پردازنده و رم سرور میشود و سرعت سایت را کند میکند.
- کاهش سطح حملات (Attack Surface): هر ابزار اضافه در وردپرس یک مسیر پتانسیل برای نفوذ است. بستن درگاههای بلااستفاده یکی از پایهایترین اصول در چارچوب امنیت سایت است.
- جلوگیری از اسکرپ و سرقت محتوا: رباتها به راحتی میتوانند تمام مقالات و دستهبندیهای شما را از طریق این API استخراج کرده و در سایتهای دیگر کپی کنند.
چه زمانی نباید REST API را کاملاً غیرفعال ساخت؟

بستن ۱۰۰ درصدی REST API برای همه کاربران ممکن است آسیبهایی به همراه داشته باشد. اگر موارد زیر را در سایت خود دارید، به جای غیرفعالسازی کامل، باید دسترسی را محدود به کاربران لاگین شده کنید:
- استفاده از ویرایشگر بلوک (Gutenberg) جهت ذخیره یا انتشار برگه و نوشته.
- استفاده از اپلیکیشن همراه ووکامرس برای مدیریت سفارشها از طریق موبایل.
- افزونههای فرمساز مدرن که از AJAX و REST API برای ارسال داده بدون رفرش استفاده میکنند.
- سایتهای Headless WordPress که بخش فرانتاند آنها با React یا Vue.js پیادهسازی شده است.
روشهای غیرفعال کردن REST API (با کد و افزونه)
روش اول: غیرفعالسازی برای کاربران مهمان (روش پیشنهادی و علمی)
بهترین راهحل این است که REST API را فقط برای افراد ناپیوسته و مهمان ببندید، ولی اجازه دهید مدیران و کاربران لاگین شده بدون مشکل از آن استفاده کنند. این کار باعث بررسی دقیق ساختار امنیتی REST API میشود و گوتنبرگ را از کار نمیاندازد.
کد زیر را به انتهای فایل functions.php قالب فعال یا افزونه اختصاصی خود اضافه کنید:
add_filter( 'rest_authentication_errors', function( $result ) {
if ( ! empty( $result ) ) {
return $result;
}
if ( ! is_user_logged_in() ) {
return new WP_Error(
'rest_not_logged_in',
'دسترسی به REST API محدود به کاربران احراز هویت شده است.',
array( 'status' => 401 )
);
}
return $result;
});
روش دوم: غیرفعال کردن با افزونه Disable REST API
اگر علاقمند به کدنویسی نیستید، نصب یک افزونه سبک بهترین راهحل است. افزونه Disable REST API بدون هیچ تنظیمات پیچیدهای کار میکند.
- وارد پیشخوان وردپرس شوید و به بخش افزونهها > افزودن بروید.
- عبارت
Disable REST APIرا جستجو کنید. - افزونه ساخته شده توسط Benjamin Adams را نصب و فعال کنید.
- به محض فعالسازی، دسترسی کاربران غیرعضو به API مسدود خواهد شد.
اگر تمایل دارید امنیت کلی وبسایت خود را فراتر ببرید، میتوانید راهکارهای موجود در پکیجهای جامع امنیتی را بررسی کنید.
روش سوم: فقط مسدود کردن اندپوینت کاربران (Users Endpoint)
گاهی میخواهید REST API فعال بماند تا افزونهها کار کنند، اما فقط جلوی لو رفتن لیست کاربران را بگیرید. برای این منظور میتوانید مسیر کاربران را مسدود کنید تا در درسترس رباتها نباشد:
add_filter( 'rest_endpoints', function( $endpoints ) {
if ( isset( $endpoints['/wp/v2/users'] ) ) {
unset( $endpoints['/wp/v2/users'] );
}
if ( isset( $endpoints['/wp/v2/users/(?P<id>[d]+)'] ) ) {
unset( $endpoints['/wp/v2/users/(?P<id>[d]+)'] );
}
return $endpoints;
});
توصیه میشود در کنار این اقدام، نسبت به مخفیسازی اطلاعات حساس هسته وردپرس اقدام کنید تا هکرها نتوانند ساختار سایت شما را به راحتی شناسایی کنند.
جدول مقایسه روشهای مختلف مدیریت REST API
| روش مدیریت | ویژگی و کاربرد |
|---|---|
| محدودسازی به کاربران لاگین شده (کد) | امنیتیترین روش استاندارد؛ گوتنبرگ و مدیریت بدون مشکل کار میکنند. |
| بستن کامل REST API (افزونه) | ساده و بدون کدنویسی؛ ممکن است باعث اختلال در گوتنبرگ یا اپلیکیشنها شود. |
| حذف اندپکیت Users (کد) | جلوگیری از افشای یوزرنامهها بدون ایجاد اختلال در بقیه عملکردها. |
| محدودسازی در سطح HTACCESS | بسیار سریع در پاسخدهی؛ نیازمند دقت بالا جهت جلوگیری از خطای Server Error. |
عیبیابی سریع (Troubleshooting)
گاهی پس از اعمال تغییرات در تنظبمات REST API، مشکلاتی رخ میدهد. در ادامه راهحل ۳ مشکل رایج را بررسی میکنیم:
۱. خطای «انتشار ناموفق بود» در ویرایشگر گوتنبرگ
علت: شما REST API را به طور کامل حتی برای مدیران لاگین شده مسدود کردهاید.
راهحل: از قطعه کد شرطی is_user_logged_in() استفاده کنید تا مدیران استثنا شوند.
۲. کار نکردن اپلیکیشن فروشگاهی یا WooCommerce App
علت: اپلیکیشنها نیاز به اتصال بدون جلسه (Stateless) دارند و بستن ساده REST API مانع آنها میشود.
راهحل: مسیرهای ووکامرس (مانند /wp-json/wc/v3/) را در کد شرطی استثنا (Whitelist) کنید.
۳. خطای 403 یا Forbidden هنگام ارسال فرمهای تماس
علت: برخی افزونههای فرمساز برای جلوگیری از اسپم از API استفاده میکنند.
راهحل: افزونه مورد نظر را تست کرده یا تنظیمات ارسال آن را روی روش سنتی Admin-Ajax قرار دهید.
سوالات متداول (FAQ)
خیر. موتورهای جستجو مانند گوگل برای ایندکس مقالات نیازی به REST API ندارند و صفحات HTML سایت شما را کرول میکنند. مسدودسازی آن تاثیری منفی در سئو ندارد.
خیر. اکثر افزونههای امنیتی قدرتمند گزینهای داخلی به نام Restrict REST API دارند که با یک کلیک این کار را انجام میدهد.
کافیست در مرورگر خود آدرس yoursite.com/wp-json/ را وارد کنید. اگر لیستی از کدهای JSON مشاهده کردید، API سایت شما فعال است.
مدیریت درگاههای ورودی وردپرس یکی از گامهای اساسی در حفظ امنیت پایدار است. غیرفعال کردن کامل یا محدودسازی هوشمندانه REST API به کاربران لاگین شده، ریسک افشای اطلاعات و فشار سرور را به شدت کاهش میدهد. اگر سایت شما نیازی به ساختارهای وبسرویسی ندارد، همین امروز با استفاده از روشهای یادشده، این قابلیت را ایمنسازی کنید.
سوالات متداول
آیا غیرفعال کردن REST API باعث خرابی ویرایشگر گوتنبرگ میشود؟
اگر REST API را بهطور کامل مسدود کنید، ویرایشگر گوتنبرگ دچار اختلال میشود. اما با محدود کردن دسترسی فقط برای کاربران مهمان، گوتنبرگ بدون هیچ مشکلی به کار خود ادامه میدهد.
بهترین روش برای غیرفعال کردن REST API وردپرس چیست؟
بهترین و ایمنترین روش، استفاده از قطعه کد در فایل functions.php برای محدودسازی دسترسی کاربران احراز هویتنشده است تا هم امنیت سایت حفظ شود و هم عملکرد افزونهها مختل نشود.
چگونه بفهمیم REST API سایت ما برای عموم باز است؟
کافی است آدرس site.com/wp-json/wp/v2/users را در مرورگر وارد کنید. اگر اطلاعات و نام کاربری مدیران نمایش داده شد، درگاه API سایت شما برای عموم باز است.
آیا برای بستن REST API حتماً باید افزونه نصب کنیم؟
خیر، نیازی به نصب افزونه نیست. شما میتوانید با افزودن یک قطعه کد ساده به فایل functions.php قالب فعال خود، دسترسی به REST API را بهراحتی مدیریت و محدود کنید.