امنیت وردپرس با مخفی کردن REST API
امنیت وردپرس با مخفی کردن REST API یکی از موضوعات مهم برای مدیران سایت است. REST API در وردپرس، یک پل ارتباطی برای اپلیکیشنها، افزونهها و سرویسهای خارجی ایجاد میکند. این قابلیت بسیار مفید است، اما اگر بدون بررسی رها شود، میتواند بخشی از اطلاعات سایت را در معرض دید قرار دهد 🔐
در بسیاری از سایتها، بعضی Endpointهای وردپرس اطلاعاتی مانند کاربران، نوشتهها، دستهها، برچسبها و رسانهها را نمایش میدهند. این موضوع همیشه به معنی آسیبپذیری قطعی نیست، اما میتواند سطح حمله را افزایش دهد. به همین دلیل، باید بررسی کنید که کدام APIها واقعاً برای سایت شما لازم هستند و کدام موارد باید محدود شوند.
اگر مدل سایت شما بر پایه عضویت، فروش دوره، ارائه محتوای اختصاصی یا پنل کاربری است، این موضوع اهمیت بیشتری پیدا میکند. در چنین شرایطی، امنیت وردپرس با مخفی کردن REST API فقط یک اقدام فنی نیست، بلکه بخشی از استراتژی حفاظت از دادهها و اعتبار برند شماست ✅
REST API وردپرس چیست؟
REST API قابلیتی در هسته وردپرس است که به نرمافزارهای دیگر اجازه میدهد با سایت شما ارتباط برقرار کنند. برای نمونه، اپلیکیشن موبایل، افزونههای سئو، ابزارهای مدیریت محتوا و حتی برخی قالبها از این ساختار استفاده میکنند.
چند نمونه از مسیرهای رایج REST API در وردپرس:
your-domain.com/wp-json/wp/v2/usersyour-domain.com/wp-json/wp/v2/postsyour-domain.com/wp-json/wp/v2/pagesyour-domain.com/wp-json/wp/v2/categoriesyour-domain.com/wp-json/wp/v2/tagsyour-domain.com/wp-json/wp/v2/media
مشکل از جایی شروع میشود که برخی از این مسیرها اطلاعاتی را نمایش میدهند که بهتر است عمومی نباشند.
چرا REST API میتواند ریسک امنیتی ایجاد کند؟
در حالت عادی، REST API برای توسعه بسیار ارزشمند است. اما اگر کنترل نشود، میتواند به شناسایی ساختار سایت کمک کند. برای مثال، نمایش لیست کاربران ممکن است نامک کاربر را آشکار کند. در بعضی سایتها، این نامک به نام کاربری نزدیک است و میتواند مرحله اول حملات Brute Force را سادهتر کند.
نمونه مهم: لیست کاربران
اگر این آدرس را بررسی کنید:
your-domain.com/wp-json/wp/v2/users
ممکن است اطلاعاتی از کاربران سایت را ببینید. این دادهها گاهی شامل slug یا نامک است. اگر این مقدار به نام کاربری نزدیک باشد، مهاجم یک قدم جلوتر میرود.
چه چیزهایی ممکن است در دسترس باشند؟
- 👤 کاربران
- 📝 نوشتهها
- 📄 صفحات
- 🖼️ رسانهها
- 🏷️ برچسبها
- 📚 دستهها
- ⚙️ برخی تنظیمات یا دادههای افزونهها
مزیتها
محدود کردن یا مخفی کردن REST API فقط برای جلوگیری از نمایش کاربران نیست. این کار مزایای مهمتری هم دارد:
- 🔒 کاهش سطح حمله: مهاجم اطلاعات کمتری از ساختار سایت به دست میآورد.
- 🛡️ محافظت از اطلاعات کاربران: احتمال افشای نامک یا شناسه کاربران کمتر میشود.
- ⚡ کنترل بهتر روی دسترسیها: فقط APIهای ضروری فعال میمانند.
- 📈 بهبود امنیت کلی وردپرس: امنیت سایت از حالت واکنشی به حالت پیشگیرانه نزدیک میشود.
- 🤝 افزایش اعتماد کاربران: حفاظت بهتر از دادهها، تجربه حرفهایتری ایجاد میکند.
کاربردها
مخفی کردن REST API برای همه سایتها به یک اندازه لازم نیست. اما در این موارد بسیار کاربردی است:
- 🛒 فروشگاههای اینترنتی: برای کاهش ریسک افشای دادههای ساختاری سایت
- 👥 سایتهای عضویتی: برای پنهان نگه داشتن اطلاعات کاربران و محتوای ویژه
- 🎓 سایتهای آموزشی: برای محافظت از دورهها و صفحات اختصاصی
- 🏢 سایتهای شرکتی: برای کاهش دسترسی غیرضروری به اطلاعات فنی
- 📰 سایتهای محتوایی بزرگ: برای مدیریت بهتر APIهای عمومی و خصوصی
چطور بررسی کنیم چه چیزی در دسترس است؟
سادهترین راه، بررسی دستی چند Endpoint مهم است. آدرسهای زیر را در مرورگر باز کنید:
your-domain.com/wp-json/wp/v2/users
your-domain.com/wp-json/wp/v2/posts
your-domain.com/wp-json/wp/v2/media
your-domain.com/wp-json/wp/v2/categories
اگر خروجی JSON نمایش داده شد، یعنی این مسیرها فعال هستند. برای بررسی دقیقتر، میتوانید از ابزارهایی مثل Postman استفاده کنید. این کار خواندن خروجیها را آسانتر میکند.

روشهای مخفی کردن REST API در وردپرس
1) استفاده از افزونه Wordfence
Wordfence یکی از شناختهشدهترین افزونههای امنیتی وردپرس است. این افزونه میتواند برخی دسترسیهای حساس را محدود کند و در کنار آن، امکانات امنیتی مهم دیگری نیز ارائه دهد.
مزایای این روش
- نصب و مدیریت ساده
- امکانات امنیتی فراتر از REST API
- مناسب برای کاربران غیر فنی
نکته مهم
اگر از افزونههای خاصی استفاده میکنید، باید مطمئن شوید که محدودسازی API باعث اختلال در عملکرد آنها نشود.
2) استفاده از افزونه Disable REST API
اگر میخواهید روی دسترسیها کنترل بیشتری داشته باشید، این افزونه گزینه مناسبی است. این نوع افزونهها معمولاً دسترسی کاربران مهمان را میبندند و فقط کاربران لاگینشده را مجاز میکنند.
مزایای این روش
- کنترل بیشتر روی Endpointها
- مناسب برای سایتهای عضویتی
- پیادهسازی سریع بدون کدنویسی
محدودیت
بعضی افزونهها مانند افزونههای سئو یا اپلیکیشنهای متصل به وردپرس، به REST API نیاز دارند. پس باید قبل از فعالسازی، سایت را تست کنید.
3) محدودسازی با کدنویسی در functions.php
اگر به کدنویسی آشنایی دارید، میتوانید دسترسی به REST API را بدون افزونه کنترل کنید. این روش سبکتر است، اما نیاز به دقت دارد.
فقط کاربران لاگینشده دسترسی داشته باشند
function restrict_wp_rest_api( $access ){
if ( ! empty( $access ) ) {
return $access;
}
if ( ! is_user_logged_in() ) {
return new WP_Error( 'rest_not_logged_in',
'Only authenticated users can access the REST API.',
array( 'status' => 401 ) );
}
return $access;
}
add_filter( 'rest_authentication_errors', 'restrict_wp_rest_api' );
فقط مدیران دسترسی داشته باشند
function restrict_wp_rest_api( $access ){
if ( ! empty( $access ) ) {
return $access;
}
if ( ! is_user_logged_in() ) {
return new WP_Error( 'rest_not_logged_in',
'Only authenticated users can access the REST API.',
array( 'status' => 401 ) );
}
if ( ! current_user_can( 'administrator' ) ) {
return new WP_Error( 'rest_not_admin',
'Only administrator can access the REST API.',
array( 'status' => 401 ) );
}
return $access;
}
add_filter( 'rest_authentication_errors', 'restrict_wp_rest_api' );
غیرفعالسازی کامل REST API
function restrict_wp_rest_api( $access ){
return new WP_Error( 'rest_disabled',
'The REST API on this site has been disabled.',
array( 'status' => 401 ) );
}
add_filter( 'rest_authentication_errors', 'restrict_wp_rest_api' );
بستن Endpoint مربوط به کاربران
function restrict_wp_user_rest_api( $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;
}
add_filter( 'rest_endpoints', 'restrict_wp_user_rest_api' );
کدام روش بهتر است؟
پاسخ به نوع سایت شما بستگی دارد. اگر سایت شما به اپلیکیشن، افزونههای حرفهای یا سرویسهای خارجی متصل است، غیرفعالسازی کامل REST API معمولاً انتخاب خوبی نیست. در این حالت، بهتر است فقط Endpointهای حساس را محدود کنید.
پیشنهاد عملی
- ابتدا Endpointهای باز را شناسایی کنید.
- فقط مسیرهای غیرضروری را ببندید.
- عملکرد افزونهها و قالب را تست کنید.
- از افزونههای امنیتی مکمل استفاده کنید.
- صفحه ورود را هم در برابر Brute Force محافظت کنید.
نکات تکمیلی برای افزایش امنیت وردپرس
مخفی کردن REST API به تنهایی کافی نیست. برای داشتن امنیت بهتر، این موارد را هم اجرا کنید:
- 🔑 رمز عبور قوی برای همه کاربران
- 🚫 محدودسازی تلاشهای ورود ناموفق
- 🧩 بهروزرسانی منظم وردپرس، قالب و افزونهها
- 🛠️ استفاده از افزونه امنیتی معتبر
- 📦 تهیه نسخه پشتیبان منظم
- 👀 بررسی دورهای کاربران و نقشها
مراحل ثبتنام برای دریافت خدمات یا شروع استفاده
اگر میخواهید فرایند ثبتنام را سریع انجام دهید، مراحل زیر را دنبال کنید:
- وارد لینک ثبتنام p.api.ir شوید.
- اطلاعات اولیه حساب را وارد کنید.
- شماره تماس یا ایمیل را تأیید کنید.
- وارد پنل شوید و تنظیمات موردنیاز را تکمیل کنید.
این فرایند کوتاه است و معمولاً در چند دقیقه انجام میشود ✨
امنیت وردپرس با مخفی کردن REST API یک اقدام هوشمندانه برای کاهش ریسکهای غیرضروری است. REST API ذاتاً بد نیست. مشکل زمانی ایجاد میشود که دسترسیهای حساس، بدون نیاز واقعی، برای همه باز بمانند. بهترین رویکرد این است که APIهای لازم را نگه دارید و فقط مسیرهای پرریسک را ببندید.
اگر سایت شما عضویتی، آموزشی، فروشگاهی یا دارای دادههای حساس است، حداقل دسترسی به لیست کاربران را بررسی و در صورت نیاز غیرفعال کنید. این کار ساده، میتواند بخشی از مسیر نفوذ را مسدود کند.
اگر تجربهای در محدودسازی REST API دارید، در بخش نظرات با ما به اشتراک بگذارید.
همچنین اگر میخواهید امنیت سایت خود را حرفهایتر کنید، مقالههای مرتبط با امنیت صفحه ورود وردپرس و سختسازی تنظیمات وردپرس را هم بخوانید 🚀

بله!
بعضی از هاستینگ ها هم خودشون این کار رو انجام میدن 🙂
من که نت افراز دارم نمیزاره