اگر از وردپرس استفاده میکنید، احتمالاً میدانید که آدرس ورود پیشفرض این سیستم معمولاً از طریق wp-login.php یا wp-admin در دسترس است. همین موضوع باعث میشود هکرها، رباتها و ابزارهای حمله بهراحتی بتوانند صفحه ورود سایت شما را پیدا کنند و حملات مختلفی مثل brute force را روی آن اجرا کنند.
یکی از روشهای کاربردی برای بالا بردن امنیت سایت وردپرسی، تغییر آدرس پیشفرض ورود است. این کار باعث میشود مسیر ورود مدیریت سایت برای همه قابل حدس نباشد و بسیاری از رباتهای مخرب حتی به مرحله تست نام کاربری و رمز عبور هم نرسند.
در این مقاله از CodaTech میخواهیم یاد بگیریم چطور بدون استفاده از افزونه، آدرس ورود وردپرس را تغییر دهیم و امنیت سایت را یک مرحله بالاتر ببریم.
چرا تغییر آدرس ورود وردپرس مهم است؟
وردپرس محبوبترین سیستم مدیریت محتوا در دنیاست و همین محبوبیت باعث شده یکی از اصلیترین اهداف حملات خودکار هم باشد. بیشتر رباتها و اسکریپتهای مخرب، ابتدا آدرسهای رایج مثل موارد زیر را بررسی میکنند:
yourdomain.com/wp-adminyourdomain.com/wp-login.php
اگر این مسیرها باز باشند، مهاجم میتواند بارها و بارها تلاش کند وارد پنل مدیریت شود. حتی اگر رمز عبور شما قوی باشد، این حملات میتوانند باعث مصرف منابع سرور، کند شدن سایت و افزایش ریسک امنیتی شوند.
با مخفی کردن یا تغییر آدرس ورود:
- دسترسی رباتهای ساده به صفحه لاگین سختتر میشود
- تعداد تلاشهای ورود ناموفق کاهش پیدا میکند
- فشار اضافی روی سرور کمتر میشود
- امنیت کلی پنل مدیریت بیشتر میشود
البته باید توجه داشته باشید که این روش بهتنهایی کافی نیست، اما بهعنوان یک لایه امنیتی اضافه، بسیار مفید و کاربردی است.
آیا تغییر آدرس ورود واقعاً امنیت سایت را بالا میبرد؟
بله، اما باید واقعبین باشیم. تغییر آدرس ورود بهتنهایی جایگزین اقدامات اصلی امنیتی مثل استفاده از رمز عبور قوی، فعالسازی احراز هویت دومرحلهای، محدود کردن تلاشهای ورود و بروزرسانی منظم وردپرس نیست.
این روش بیشتر شبیه به این است که درِ ورودی اصلی ساختمان را از دید عموم پنهان کنید. شاید اگر کسی خیلی حرفهای باشد باز هم بتواند به آن برسد، اما بخش زیادی از حملات خودکار و عمومی متوقف میشوند.
پس اگر دنبال یک راهکار ساده، سبک و بدون افزونه برای افزایش امنیت وردپرس هستید، این روش یکی از بهترین گزینههاست.
مزایای تغییر آدرس ورود وردپرس بدون افزونه
بسیاری از کاربران برای تغییر آدرس ورود از افزونهها استفاده میکنند، اما انجام این کار با کد چند مزیت مهم دارد:
- نیاز به نصب افزونه اضافی ندارید
- تعداد افزونههای فعال سایت کمتر میشود
- مصرف منابع هاست کاهش مییابد
- کنترل کاملتری روی عملکرد کد خواهید داشت
- میتوانید آن را متناسب با ساختار سایت خود شخصیسازی کنید
اگر سایت شما سبک و بهینه طراحی شده و نمیخواهید برای هر تغییر کوچک یک افزونه نصب کنید، استفاده از کد اختصاصی انتخاب هوشمندانهای است.
قبل از استفاده از این روش به چه نکاتی توجه کنیم؟
قبل از اینکه کد را روی سایت اصلی قرار دهید، این نکات را حتماً در نظر بگیرید:
- از سایت خود بکاپ کامل بگیرید
- اگر به فایلهای قالب یا افزونه اختصاصی دسترسی ندارید، اول در سایت تستی امتحان کنید
- آدرس جدید ورود را در جای امن ذخیره کنید
- اگر چند مدیر روی سایت کار میکنند، آدرس جدید را با آنها هماهنگ کنید
- بهتر است این کد در افزونه اختصاصی یا
functions.phpقالب فرزند قرار بگیرد
نکته مهم دیگر این است که اگر آدرس جدید را فراموش کنید، برای بازگردانی ممکن است نیاز باشد از طریق فایل منیجر هاست یا FTP کد را غیرفعال کنید.
بهترین محل قرار دادن کد کجاست؟
برای اضافه کردن این نوع کدها معمولاً سه روش وجود دارد:
- قرار دادن در فایل
functions.phpقالب - قرار دادن در قالب فرزند یا Child Theme
- ساخت افزونه اختصاصی کوچک برای قابلیتهای امنیتی
بهترین روش این است که کد را داخل یک افزونه اختصاصی سبک قرار دهید تا با تغییر قالب از بین نرود. اما اگر فعلاً میخواهید سریعتر این قابلیت را اضافه کنید، فایل functions.php قالب فرزند هم گزینه مناسبی است.
کد تغییر آدرس پیشفرض ورود وردپرس بدون افزونه
در ادامه کدی را میبینید که با ساختار شیءگرا نوشته شده و از نام CodaTech استفاده میکند. این کد بررسی میکند اگر کاربری بخواهد مستقیم به صفحه ورود پیشفرض وردپرس مراجعه کند، بدون داشتن کلید مشخص، به صفحه دیگری هدایت شود.
<?php
/**
* Class CodaTech_Secure_Login
*
* تغيير آدرس پيش فرض ورود وردپرس بدون افزونه
*/
if ( ! class_exists( 'CodaTech_Secure_Login' ) ) {
class CodaTech_Secure_Login {
/**
* اسلاگ يا کليد امنيتي ورود
*
* @var string
*/
private $secret_slug = 'my_secret_slug';
/**
* ثبت هوک ها
*/
public function __construct() {
add_action( 'init', array( $this, 'codatech_redirect_wp_admin' ) );
add_filter( 'site_url', array( $this, 'codatech_customize_login_url' ), 10, 4 );
add_filter( 'network_site_url', array( $this, 'codatech_customize_login_url' ), 10, 3 );
}
/**
* جلوگيري از دسترسي مستقيم به wp-login.php
*/
public function codatech_redirect_wp_admin() {
global $pagenow;
$is_login_page = ( 'wp-login.php' === $pagenow );
$has_secret_key = isset( $_GET[ $this->secret_slug ] );
if ( $is_login_page && ! $has_secret_key && ! is_user_logged_in() ) {
wp_redirect( home_url( '/404' ) );
exit;
}
}
/**
* تغيير لينک هاي ورود توليد شده توسط وردپرس
*/
public function codatech_customize_login_url( $url, $path, $scheme, $blog_id = null ) {
if ( 'wp-login.php' === $path && ! is_admin() ) {
$url = add_query_arg( $this->secret_slug, '', home_url( 'wp-login.php' ) );
}
return $url;
}
}
new CodaTech_Secure_Login();
}
این کد دقیقاً چه کاری انجام میدهد؟
این کد از چند بخش اصلی تشکیل شده است:
1) تعریف کلاس امنیتی
در ابتدای کد یک کلاس با نام CodaTech_Secure_Login ساخته شده تا همه منطق مربوط به تغییر آدرس ورود داخل یک ساختار منظم قرار بگیرد. این کار باعث میشود توسعه و نگهداری کد سادهتر شود.
2) تعیین کلید امنیتی
private $secret_slug = 'my_secret_slug';
شما باید مقدار my_secret_slug را به یک عبارت اختصاصی تغییر دهید.
این عبارت همان کلیدی است که صفحه ورود را از حالت عمومی خارج میکند.
3) جلوگیری از ورود مستقیم از آدرس پیشفرض
در متد codatech_redirect_wp_admin بررسی میشود که آیا کاربر مستقیماً وارد wp-login.php شده یا نه. اگر کلید امنیتی موردنظر در URL وجود نداشته باشد، کاربر به صفحه 404 هدایت میشود.
4) تغییر لینکهای پیشفرض ورود
در متد codatech_customize_login_url، آدرسهای لاگینی که وردپرس بهصورت خودکار تولید میکند تغییر میکنند تا با ساختار جدید هماهنگ شوند.
آدرس ورود جدید به چه شکلی خواهد بود؟
اگر به عنوان مثال مقدار زیر را تنظیم کنید:
<span class="hljs-keyword">private</span> <span class="hljs-variable">$secret_slug</span> = <span class="hljs-string">'codatech-login'</span>;
آدرس ورود شما به این شکل خواهد شد:
https://yourdomain.com/wp-login.php?codatech-login
یعنی هر کسی که آدرس عادی wp-login.php را وارد کند، دیگر صفحه ورود را نمیبیند و فقط کسانی که کلید مخصوص را دارند میتوانند وارد صفحه لاگین شوند. تفاوت این روش با افزونههای تغییر آدرس ورود چیست؟
افزونههای امنیتی معمولاً امکانات بیشتری ارائه میدهند، مثل:
- تغییر کامل slug ورود
- محافظت در برابر brute force
- ثبت لاگ تلاشهای ناموفق
- محدودسازی IP
- احراز هویت دومرحلهای
اما اگر فقط هدفتان این است که آدرس پیشفرض ورود را از دسترس عمومی خارج کنید، این کد سبکتر و سریعتر است و وابستگی اضافه هم ایجاد نمیکند.
معایب یا محدودیتهای این روش
برای اینکه مقاله حرفهایتر و واقعیتر باشد، بهتر است به محدودیتها هم اشاره کنیم:
- این روش صفحه ورود را کاملاً تغییر نمیدهد، بلکه دسترسی به آن را محدود میکند
- اگر کلید انتخابی ضعیف باشد، قابل حدس خواهد بود
- در صورت فراموش کردن آدرس ورود، دسترسی مدیریت سختتر میشود
- برخی افزونهها یا سیستمهای جانبی ممکن است نیاز به تنظیم مجدد داشته باشند
پس حتماً قبل از استفاده در سایت اصلی، در محیط آزمایشی تست انجام دهید.