چگونه با فایل wp-config.php وردپرس را امن کنیم!
هر سایت وردپرسی شامل یک فایل به نام wp-config.php هست. این فایل مسئول پیکربندی وردپرس هست که یکی از مهمترین فایلهای وردپرس به حساب میاد. این پرونده حاوی پارامترهای پیکربندی زیادیه که میتونید برای افزایش امنیت وردپرس این فایل رو ویرایش و شخصی سازی کنید. پیش از این در مقاله آموزش مدیریت فایل کانفیگ وردپرس به معرفی ترفندهایی برای استفاده بهتر در وردپرس پرداختم که میتونید ازش استفاده کنید. تو این آموزش هم میخوام به معرفی روشهایی که با استفاده از اون میتونید اقدام به افزایش امنیت وردپرس با فایل wp-config.php بکنید بپردازم.
آموزش افزایش امنیت وردپرس با فایل wp-config.php
از اونجایی که فایل کانفیگ وردپرس به عنوان اصلیترین فایل وردپرس به حساب میاد و اگه مشکلی در این فایل به وجود بیاد به صورت کلی سایت شما را تحت الشعاع قرار میده، باید خیلی مراقب این فایل باشید. بنابراین برای افزایش امنیت بیشتر در وردپرس هم میتونید از ترفندهایی که برای این فایل وجود داره استفاده کنید که در این مقاله به معرفی این موارد میپردازم.
1. تغییر پیشوند جداول در وردپرس
آیا تا به حال شده که وارد phpmyadmin شده و جداول پایگاه داده سایت وردپرسی خودتون رو ببینید؟(برای مشاهده این فایل میتونید وارد هاست خودتون شده و سپس روی گزینه phpmyadmin کلیک کنید تا به دیتابیس دسترسی داشته باشید). به طور پیش فرض وقتی که مراحل نصب وردپرس رو طی میکنید و سایت وردپرسی شما بالا میاد، پایگاه داده دارای یازده جدول بوده و هر جدول دارای یک تابع خاصی است. به عنوان نمونه، wp_posts اطلاعات را از پستها، صفحات و منوی ناوبری ذخیره میکنه. از اونجایی که توابع هر جدول از پیش تعریف شده، هکر میدونه که چه جزییاتی از سایت شما در هر یک از این جداول قرار داره. به عنوان مثال، اگر قصد داشته باشه از کاربران سایت شما مطلع بشه و استفادهای ببره، کافیه روی جدول ‘wp_users’ تمرکز بکنه.
وردپرس به صورت پیشفرض از پیشوند wp_ برای همه جداول استفاده میکنه. تغییر این به یک پیشوند منحصر به فرد موجب مخفی کردن نام جدول شده و به شما کمک خواهد کرد که سایت وردپرسی خود را امنتر کنید. برای انجام این کار کافیه از فایل wp-config شروع کنید. که جزییات کامل برای این تغییرات رو در مقاله آموزش تغییر پیشوند جداول وردپرس توضیح دادم.
2. غیرفعال کردن ویرایشگر قالب و افزونه در وردپرس
در پیشخوان وردپرس، گزینهای برای ویرایش فایلهای افزونه و قالب وجود داره که در صورت داشتن دسترسی به پیشخوان و داشتن یک نقش کاربری وردپرس با دسترسی بالا هرکسی میتونه به کدهای این دو بخش دسترسی داشته و تغییراتی رو در اون اعمال بکنه.
حالا درسته این قابلیت یک ابزار مفید هست و میتونید با اون به راحتی هر تغییراتی که لازم داشتید رو در قالب و افزونههای وردپرس بدون اینکه نیاز باشه وارد هاست بشید انجام بدین، اما باید به این موضوع هم توجه کنید که همین ابزار به اصطلاح کاربردی و مفید وقتی در دست یک هکر قرار بگیره به خطرناکترین ابزار وردپرس تبدیل میشه. به عنوان مثال، فرض کنید یک هکر موفق به ورود در پیشخوان سایت وردپرسی شما بشه. در این صورت این هکر میتونه به راحتی یک کد مخرب رو به قالب یا افزونههای سایت شما اضافه کرده و با ایجاد یک در پشتی دسترسی به سایت رو برای هر زمان که نیاز داره فراهم بکنه. پس میتونید با غیرفعال کردن ویرایشگر قالب و افزونه در وردپرس از انجام این کار جلوگیری کنید. برای این منظور میتونید به ترتیب زیر عمل کنید.
- وارد هاست خود شده و به مسیر public_html مراجعه کنید.
- فایل wp-config.php را که در ریشه هاست قرار دارد را انتخاب کرده و به صفحه ویرایش فایل مراجعه کنید.
- حالا قطعه کد زیر را در بخش define این فایل قرار داده و ذخیره کنید.
// Disallow file edit define( ‘DISALLOW_FILE_EDIT’, true );
12 | // Disallow file editdefine( ‘DISALLOW_FILE_EDIT’, true ); |
بعد از قرار دادن کد بالا امکان ویرایش فایلهای قالب و افزونه از طریق ویرایشگر پیشخوان وردپرس غیرفعال خواهد شد.
3. غیرفعال کردن نصب افزونه توسط کاربران در وردپرس
تو مرحله قبل یاد گرفتیم که چطور ویرایشگر قالب و افزونه وردپرس رو غیرفعال کنیم، اما غیر فعال کردن دسترسی کاربران برای ویرایش این فایلها فقط یک سطح امنیتی محدودی رو ارائه میده. چرا که این کار از نصب یک افزونه مخرب جلوگیری نخواهد کرد. در این صورت هکر قادره به راحتی کدهای خودش رو در قالب یک افزونه بسازه و با آپلود در وردپرس به راحتی کدهای مخرب خودش رو فعال بکنه. پس برای اینکه از نصب افزونه یا قالب به این شیوه هم جلوگیری کنید کافیه کد زیر را در فایل wp-config.php وردپرس قرار بدین. define(‘DISALLOW_FILE_MODS’,true);
1 | define(‘DISALLOW_FILE_MODS’,true); |
حالا ممکنه از خودتون بپرسید خب، ما که نصب افزونه رو غیرفعال کردیم. حالا اگر خودمون تصمیم به نصب افزونه داشتیم باید چیکار کنیم؟ پاسخ کاملا ساده است، برای این کار کافیه از روش دستی که برای نصب افزونه در وردپرس با استفاده از هاست توضیح دادم استفاده کنید. این روش هم برای نصب افزونه و هم برای آپدیت افزونهها کاربرد خواهد داشت.
4. لزوم وارد کردن اطلاعات FTP برای نصب افزونه
یک روش دیگه هم وجود داره که اگر دوست نداشتید از گزینه قبلی استفاده کنید میتونید یک مرحله ایجاد کنید که برای نصب و آپدیت افزونهای اطلاعات اکانت FTP رو درخواست کنید. در این صورت درست مثل حالت تایید دو مرحلهای در وردپرس عمل میشه و تا زمانی که اطلاعات اکانت FTP به درستی وارد نشه، کاربر قادر به نصب افزونه یا قالب در وردپرس نخواهد بود. برای این کار کافیه کدهای زیر رو در فایل wp-config.php قرار بدین. define(‘FS_METHOD’, ‘ftpext’);
1 | define(‘FS_METHOD’, ‘ftpext’); |
اگر هاست یا سرور شما از FTPS هم پشتیبانی میکنه میتونید از کد زیر استفاده کنید. define(‘FTP_SSL’, true);
1 | define(‘FTP_SSL’, true); |
یا در صورت پشتیبانی از SFTP هم میتونید از کد زیر استفاده کنید. define(‘FS_METHOD’, ‘ssh2’);
1 | define(‘FS_METHOD’, ‘ssh2’); |
گاهی اوقات این قابلیت در وردپرس به صورت پیشفرض فعال هست و کاربران از اون به عنوان یک مشکل یاد میکنند که در مقاله آموزش نحوه رفع خطای درخواست اطلاعات FTP در وردپرس روش غیرفعال کردن این قابلیت رو توضیح دادم.
5. تغییر کلید امنیتی در وردپرس
تا حالا به این نکته توجه کردید که شما مجبور نیستید هر بار که قصد انجام کاری رو در وردپرس دارید وارد حساب کاربری خودتون در وردپرس بشید؟ به نظر شما این کار چطور انجام میگیره؟ چگونه وردپرس این اعتبار سنجی رو انجام میده و امکان ورود رو برای شما فراهم میکنه؟
پس از وارد شدن به حساب کاربری خودتون در وردپرس، اطلاعات ورود شما به صورت رمزگذاری شده توسط کوکی مرورگر ذخیره میشن. حالا برای هر یک از این کوکیها یک کلید امنیتی به صورت متغیرهای تصادفی ایحاد میشه که به بهبود این رمزگذاری کمک میکنه. حالا اگر سایت شما هک شده باشه، تغییر کلیدهای مخفی کوکی ناموفق خواهد بود و هر کاربر فعال را مجبور به خروج از سیستم خواهد کرد. پس از حذف شدن این کوکی، دسترسی کاربر به پیشخوان وردپرس از بین خواهد رفت. این کار توسط کلیدهای امنیتی در وردپرس انجام میگیره که داخل فایل کانفیگ وردپرس مشابه نمونه زیر قرار دارند. define(‘AUTH_KEY’, ‘put your unique phrase here’); define(‘SECURE_AUTH_KEY’, ‘put your unique phrase here’); define(‘LOGGED_IN_KEY’, ‘put your unique phrase here’); define(‘NONCE_KEY’, ‘put your unique phrase here’); define(‘AUTH_SALT’, ‘put your unique phrase here’); define(‘SECURE_AUTH_SALT’, ‘put your unique phrase here’); define(‘LOGGED_IN_SALT’, ‘put your unique phrase here’); define(‘NONCE_SALT’, ‘put your unique phrase here’);
12345678 | define(‘AUTH_KEY’, ‘put your unique phrase here’);define(‘SECURE_AUTH_KEY’, ‘put your unique phrase here’);define(‘LOGGED_IN_KEY’, ‘put your unique phrase here’);define(‘NONCE_KEY’, ‘put your unique phrase here’);define(‘AUTH_SALT’, ‘put your unique phrase here’);define(‘SECURE_AUTH_SALT’, ‘put your unique phrase here’);define(‘LOGGED_IN_SALT’, ‘put your unique phrase here’);define(‘NONCE_SALT’, ‘put your unique phrase here’); |
برای اینکه کاری کنید این کلیدها به صورت رندوم ایجاد بشن کافیه روی دکمه زیر کلیک کرده و کدهایی که در لینک زیر قرار داره رو جایگزین کدهایی که مشابه همین نمونه بالا در فایل wp-config.php قرار داره بکنید.
6. مخفی کردن فایل wp-config.php در وردپرس
در هر سایت وردپرسی فایل wp-config در یک مکان پیش فرض یعنی مسیر public_html در هاست قرار داره. از این رو تغییر محل فایل میتونه مانع از افتادن فایل در دست هکرها بشه. خوشبختانه، وردپرس به فایل wp-config این اجازه رو میده که با قرار گرفتن در مسیری جدا و خارج از نصب وردپرس هم کار خودش رو به خوبی انجام بده. به عنوان مثال، اگر سایت شما در روت هاست نصب شده و به اصطلاح در مسیر public_html قرار گرفته باشه، فایل پیکربندی به طور پیش فرض در پوشه public_html حضور خواهد داشت. اما شما میتونید wp-config را در خارج از پوشه public_html قرار داده و بدون مشکل همچنان سایت شما کار بکنه. برای این منظور مراحل زیر را دنبال کنید.
- ابتدا وارد هاست خود شده و سپس روی گزینه File manager کلیک کنید تا به مسیر مدیریت فایلها در هاست هدایت شوید.
- سپس وارد مسیر public_html شده و دنبال فایل wp-config.php بگردید.
- روی فایل راست کلیک کرده و گزینه Move را انتخاب کنید.
- مسیر مورد نظر برای انتقال فایل را انتخاب کنید و سپس فایل را انتقال دهید.
- با کلیک روی دکمه New File در هاست خود یک فایل جدید با نام wp-config.php در مسیر public_html بسازید و کدهای زیر را در آن قرار دهید.
define(‘ABSPATH’, dirname(__FILE__) . ‘/’); require_once(ABSPATH . ‘../path/to/wp-config.php’);
12 | define(‘ABSPATH’, dirname(__FILE__) . ‘/’);require_once(ABSPATH . ‘../path/to/wp-config.php’); |
حالا همونطور که در کد بالا میبینید به جای ../path/to/wp-config.php مسیری که فایل اصلی wp-config.php را به اون منتقل کردید را وارد کرده و فایل را ذخیره کنید.
7. افزایش امنیت فایل wp-config.php
این پیکربندی در مقابل حملات آسیب پذیر هست و ضروریه تا اونو ایمن کنید. یکی از راههای انجام این کار این تغییر محل ذخیره فایل wp-config.php هست که در بالا توضیح دادم. اگرچه برخی از توسعه دهندگان ممکنه با این کار مخالفت کنند، اما تعداد زیادی فکر میکنند که این کار ایده خوبی هست.
یکی دیگر از اقدامات امنیتی که میتونید انجام بدین محدود کردن مجوز این فایل هست که در آموزش نحوه تغییر سطح دسترسی فایل ها در سی پنل cpanel به نحوه تغییر پرمیژن فایلها در هاست پرداختیم. برای اینکه بتونید فایل wp-config.php رو به این روش ایمن کنید باید مجوز فایل را روی 600 تنظیم کنید تا فقط صاحبان واقعی قادر به ویرایش فایل wp-config.php باشند. برای این کار روی فایل wp-config.php راست کلیک کرده و گزینه Change Permissions رو انتخاب کنید. سپس در پنجره باز شده دقیقا تیک گزینههای مورد نظر رو برای Read و Write که در ستون user قرار داره انتخاب کنید تا سطح دسترسی روی 600 قرار بگیره.
و سپس خطوط زیر را در فایل افشززثسس. وارد کنید تا هکرها از بارگذاری فایل wp-config fi به صورت مستقیم از طریق مرورگر سلب شوند. برای این کار روی فایل htaccess. راست کلیک کرده و گزینه Edit رو انتخاب کنید. سپس کدهای زیر را به فایل اضافه کرده و ذخیره کنید. # protect wpconfig.php <files wp-config.php> order allow,deny deny from all </files>
12345 | # protect wpconfig.php <files wp-config.php> order allow,denydeny from all </files> |
در صورتی که فایل htaccess. رو در مسیر public_html هاست سی پنل ندارید باید بدونید که این فایل جزو فایلهای مخفی هست. برای نمایش این فایل روی دکمه Settings که در بالای صفحه قرار داره کلیک کنید. سپس در پنجره باز شده تیک گزینه show hidden files رو انتخاب کنید و در نهایت روی دکمه save کلیک کنید که فایلهای مخفی رو هم بتونید ببینید.
8. خطایابی در وردپرس با فایل wp-config.php
یکی از راههای خطایابی در افزونه وردپرس یا قالب وردپرس با استفاده از قابلیت wp_debug صورت میگیره که وقتی این گزینه را فعال کنید خطاهایی که ممکنه در سایت شما وجود داشته باشه در بخش پیشخوان وردپرس یا بخش کاربری به همراه نوع خطا و مسیر دقیق خطا به شما نمایش داده میشه که با استفاده از دیباگ وردپرس میتونید اقدام به خطایابی در وردپرس بکنید. حالا هر زمان که با خطایی در وردپرس مواجه شدید کافیه تا wp_debug را فعال کرده و بعد از رفع خطا مجددا اونو غیرفعال کنید. انجام این کار به صورت دورهای در وردپرس پیشنهاد خوبی هست که میتونه شما رو در شناسایی اینکه آیا خطاها یا کدهایی غیرعادی در وردپرس وجود داره مناسب باشه. define(‘WP_DEBUG_DISPLAY’, false);
1 | define(‘WP_DEBUG_DISPLAY’, false); |
اگر دیباگ وردپرس به صورت بالا در فایل wp-config.php ذخیره شده باشه مقدار false در کد بالا نشون دهنده غیرفعال بودن اونه و برای فعال کردن اون باید مقدار false را به true تغییر بدین تا کد شما به شکل زیر تغییر بکنه. define(‘WP_DEBUG_DISPLAY’, true);
1 | define(‘WP_DEBUG_DISPLAY’, true); |
بعد از اینکه خطایابی انجام دادین و مطمئن شدید مشکلی وجود نداره مجددا مقدار اونو به false تغییر بدین.
جمعبندی نهایی
با انجام همه این کارها، ما نحوه محافظت از سایت وردپرسی خودمونو با فایل wp-config.php یاد گرفتیم اما این راهکارها تنها بخش کوچکی از کارهایی هستند که با استفاده ازشون میتونید امنیت وردپرس رو ارتقا بدین. چند اقدام دیگر امنیتی که میتونید انجام بدین عبارتند از استفاده از یک افزونه امنیتی وردپرس، استفاده از یک گواهینامه SSL وردپرس، استفاده از یک نام کاربری و رمز عبور منحصر به فرد و قوی، اجرای احراز هویت HTTP و احراز هویت دو مرحلهای در وردپرس که میتونه در تامین امنیت وردپرس راهکارهای خوبی باشه. اما مهمتر از همه این موارد یک مسئله که خیلی اولویت بالایی داره ایجاد بک آپ در وردپرس هست که اگر زمانی با مشکلی امنیتی مواجه شدید که قادر به رفع اون نشدید بتونید با بازگردانی بکآپ در وردپرس به سادگی سایت خود را بدون هیچ مشکلی مجددا اجرا کنید. امیدوارم که این آموزش هم مورد توجه و پسند شما قرار گرفته باشه و با استفاده از روشهایی که برای تامین امنیت در وردپرس با استفاده از فایل wp-config.php معرفی کردم بتونید امنیت سایتتون رو ارتقا بدین. در صورتی که در رابطه با این آموزش و نحوه افزایش امنیت وردپرس با فایل wp-config.php سوال یا مشکل خاصی داشتید در بخش دیدگاهها اعلام کنید.