no-img
اِمیلاسلام کاربر مهمان. امروز یکشنبه ۲۴ آذر ۱۳۹۸


ادامه مطلب

بروزرسانی؛
۲۶ مهر ۱۳۹۸
همه چیز درباره فایل wp-config.php
امتیاز 5.00 ( 7 رای )
حمایت از emila.ir

همه چیز درباره فایل wp-config.php

بروزرسانی؛ ۲۶ مهر ۱۳۹۸

در دایرکتوری نصب وردپرس فایلی به نام “wp-config.php” وجود دارد که حاوی تنظیمات و پیکربندی های مهمی برای افزایش کارایی (Performance) و اعمال مسائل امنیتی می باشد و از این حیث به عنوان ستون فقرات وردپرس نیز شناخته می شود.

هر گونه پیکربندی اشتباه این فایل می تواند وب سایت تان را با چالش های جدی مواجه کند، به همین دلیل بهتر است ابتدا با ساختار wp-config آشنا شوید تا بتوانید با خیال راحت تغییرات تان را اعمال نمائید.

همانطور که در تصویر بالا مشاهده می کنید پس از نصب وردپرس فایل wp-config-sample.php نیز ایجاد می شود که می توانید آنرا حذف کنید.

wp-config.php حاوی چه تنظیماتی است؟

در ادامه قصد داریم تنظیمات اولیه و پیش فرضی که بعد از نصب وردپرس با آن روبرو خواهید شد را بررسی کنیم:

۱- تنظیمات پایگاه داده(Database) وردپرس

وردپرس برای برقراری ارتباط با بانک اطلاعاتی MySQL از تنظیمات پایگاه داده استفاده می کند، قابل توضیح نیست که اگر این تنظیمات به درستی مشخص نشده باشند وب سایت تان راه اندازی نخواهد شد. همانطور که می دانید در زبان برنامه نویسی PHP برای تعریف ثوابت از تابع define استفاده می شود، تابع define دارای دو پارامتر اجباری است که مقدار اول نام ثابت و دومی مقدار ثابت(به صورت رشته ،عدد ،بولین) می باشد، این تابع در wp-config به کرات استفاده شده است.

DB_NAME اولین موردی است که بررسی می کنیم، این ثابت حاوی نام پایگاه داده وردپرس است که کلیه جداول وردپرس در آن نگهداری می شود.

/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress_db_name' );

ثوابت بعدی DB_USER و DB_PASSWORD هستند که به ترتیب حاوی نام کاربری و کلمه عبور اتصال به پایگاه داده MySQL می باشند، به عبارت دیگر کاربری که مجوز برقراری ارتباط به بانک اطلاعاتی وردپرس را دارد در این قسمت مشخص می شود.

/** MySQL database username */
define( 'DB_USER', 'db_user_name' );
/** MySQL database password */
define( 'DB_PASSWORD', 'db_password' );

DB_HOST نیز آدرس سروری است که پایگاه داده وردپرس در آنجا نگهداری می شود. مقدار ثابت فوق در بیشتر مواقع به صورت “localhost” می باشد، اما گاهی اوقات ممکن است که سرویس هاستینگ شما از آدرس IP یا نام دامنه استفاده کند.

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

دو ثابت دیگر نیز در این لیست وجود دارد که شیوه کدینگ و ذخیره سازی اطلاعات در جداول وردپرس را مشخص می کنند.

/** Database Charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8mb4' );
/** The Database Collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );

در انتهای این بخش به متغیر table_prefix می رسیم که با مقدار پیش فرض “_wp” تنظیم شده است. وردپرس از این مقدار در نامگذاری جداول خود استفاده می کند و در ابتدای نام آنها _wp را قرار می دهد، به عنوان مثال wp_users، wp_posts.

$table_prefix = 'wp_';

توجه داشته باشید که این ثوابت در فرآیند نصب وردپرس توسط شما تعیین می شوند.

۲- تنظیمات امنیتی وردپرس

ثوابت امنیتی از کاراکترهای تصادفی و منحصربفردی تشکیل شده اند که در هنگام احراز هویت(Authentication) کاربران و رمزنگاری کوکی های استفاده می شوند.

define( 'AUTH_KEY', '`egJ4I@x$p8 /oO>H[>H:v;!spLAhf@:#dlT;`7=iNI28/:4/)E,L j-,]/ dA|t' );
define( 'SECURE_AUTH_KEY', '<RRew<!^9TEz=+#7`[<*=q3DE:R%<(6[r:jq<$JUaln_8!iDoeqt5k.R*aN#ftUN' );
define( 'LOGGED_IN_KEY', 'slj0lA?I5{$;b19?m5 -)E|.5/$5*k)Bc=C<<@]Jhx7@/)OLfjwShv`fc<=l<Rz}' );
define( 'NONCE_KEY', ')L/Zo%X,x,.m>tgC[1y`w&:+~r.T+oYoQql#wN6Go! (/%T|=V:*kJ2mln/<<dd$' );
define( 'AUTH_SALT', '6NA?Y#N)9B6.Hc&9v>y>-Aa*ZR=)YG NbcQs5GxbL*erT[1d9* bE(XG Hv' );
define( 'SECURE_AUTH_SALT', ';E3j1lDcE8Xc3{I.N#zp:9/IbnZrR<wqq&8pIbDz%c7kNo?F>,73l>Vf8Zf8Hnd0' );
define( 'LOGGED_IN_SALT', '0_Rl78Nd&M_nz`HPKls+.p~+#pBdQ%%c/-053;|8{i w2v~ID0vs}W=5A+B7~[G:' );
define( 'NONCE_SALT', '+v*[S6/m%Jy6&f%s9#F=UR856AY^7%T.lmwn/[QV*=S_Roh40RDdlxFd>5pT|ep^' );

این مقادیر در مراحل نصب وردپرس تولید می شوند، اما شما می توانید آنها را به کمک ابزار WordPress Key Generator تغییر دهید. در صورت تغییر این مقادیر کلیه کاربرانی که به وردپرس لاگین کرده اند از حساب کاربری خود خارج شده و باید مجددا به سیستم لاگین کنند.

۳- مد خطایابی(Debugging Mode)

بلافاصله پس از متغیر table_prefix ثابت WP_DEBUG را با مقدار پیش فرض false مشاهده خواهید کرد. اگر آن را به true تغییر دهید وردپرس در وضعیت اشکال زدایی اجرا خواهد شد و در صورت بروز هر گونه خطایی آن را نشان می دهد.

define( 'WP_DEBUG', false );

قبل از تغییر این ثابت پیشنهاد می کنیم مطلب چگونه خطاهای وردپرس را ردیابی کنیم؟ را مطالعه فرمائید.

۴- ثابت ABSPATH

این ثابت از فراخوانی و اجرای مستقیم wp-config.php از طریق مرورگر وب جلوگیری می کند. به عنوان مثال ممکن است فردی قصد اجرای این فایل را از نشانی https://yourdomain.com/wp-config.php داشته باشد و عملا نباید اجازه اینکار به وی داده شود.

if ( !defined('ABSPATH') )
define( 'ABSPATH', dirname(__FILE__) . '/' );

به هیچ عنوان مقادیر این قسمت را تغییر ندهید.

۵- فایل wp-settings.php

به انتهای فایل wp-config.php رسیدیم، هر آنچه که تا اینجا بررسی کردیم فقط ثوابت و تنظیمات بودند و تا زمانی که فایل wp-settings توسط خط زیر فراخوانی نگردد هیچگونه عملیاتی توسط وردپرس قابل انجام نخواهد بود، پس حواستان را حسابی جمع کرده و مواظب این کد ساده اما حیاتی باشید.

require_once( ABSPATH . 'wp-settings.php' );

ترفند های جالب فایل wp-config وردپرس؛

چه چیزهایی را می توانیم به wp-config اضافه کنیم؟

کلیه تنظیمات وردپرس به موارد بالا ختم نمی شود و شما می توانید بسته به نیازی که دارید ثوابت و متغیرهای متفاوتی را به این فایل اضافه کنید، در ادامه قصد داریم به تعدادی از این گزینه های مفید و کاربردی اشاره کنیم.

۱- انتقال دایرکتوری های وردپرس

وردپرس به صورت پیش فرض قالب ها و افزونه هایی که نصب می کنید را به ترتیب در زیر دایرکتوری های themes و plugins از دایرکتوری wp-content ذخیره می کند.

اما شما می توانید این رفتار پیش فرض را با استفاده از ثابت WP_CONTENT_DIR به صورت زیر تغییر دهید.

define( 'WP_CONTENT_DIR', dirname(__FILE__) . '/my-content/my-wp-content' );

به کمک تابع dirname مسیر جاری که فایل wp-config در آنجا ذخیره شده است(مسیر Root) را بدست می آوریم، در صورتی که این دایرکتوری ها در مسیر مشخص شده وجود نداشته باشد وردپرس آنها را ایجاد می کند، پس از آن باید دایرکتوری های themes و plugins را از مسیر قبلی به مسیر جدید منتقل کنید.

به جای استفاده از تابع dirname می توانید مستقیما مسیر جدید را مشخص کنید.

define( 'WP_CONTENT_URL', 'http://yourdomain.com/my-content/my-wp-content' );

اگر می خواهید فقط مسیر پیش فرض دایرکتوری plugins را تغییر دهید و کاری به wp-content ندارید از فرمت های زیر استفاده کنید. برای انتقال دایرکتوری themes باید از WP_CONTENT_DIR استفاده کنید و ثابت مشخصی برای آن تعریف نشده است.

define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/my-plugins' );
define( 'WP_PLUGIN_URL', WP_CONTENT_URL . '/my-plugins' );

در داخل wp-content یک زیر دایرکتوری مهم به نام uploads وجود دارد که هر آنچه شما آپلود می کنید در این دایرکتوری ذخیره می شود، برای تغییر این مسیر پیش فرض به صورت زیر عمل کنید.

define( 'UPLOADS', 'my-uploads' );

به عنوان نکته آخر این بخش بهتر است بدانید که این تغییر مسیرها می تواند در تامین امنیت وردپرس تاثیرگذار باشد، به همین دلیل پیشنهاد می کنیم مقاله امنیت وردپرس: چگونه Directory Browsing را غیرفعال کنیم؟ را مطالعه فرمائید.

۲- مدیریت رونوشت ها(Post Revisions)

همانطور که ممکن است در جریان باشید وردپرس در هنگام ویرایش یک پست، نسخه های متفاوتی از آن نوشته را برای روز مبادا ذخیره می کند و این قابلیت را به شما می دهد تا در صورت قطع برق یا کرش مرورگر تغییراتی که در آن بازه زمانی انجام داده اید را به آخرین نسخه برگردانید.

تنظیمات این بخش در راندمان و کارایی وردپرس تاثیرگذار است.

این امکان به صورت پیش فرض فعال می باشد با قطعه کد زیر میتواید تعداد دفعات این ذخیره سازی را کمتر و یا بیشتر نمایید.

define('WP_POST_REVISIONS', 5);  // تعداد دلخواه را به جای عدد 5 وارد نمایید

و در صورتی که می خواهید آنرا غیرفعال کنید از قطعه کد زیر استفاده کنید.

define( 'WP_POST_REVISIONS', false );

۳- ذخیره خودکار(Automatic Save)

زمانی که در حال ویرایش یا ایجاد یک پست جدید هستید، وردپرس به صورت خودکار و در بازه های زمانی ۶۰ ثانیه ای تغییرات تان را ذخیره می کند و منتظر نمی ماند که بر روی گزینه “ذخیره پیش نویس” کلیک کنید، این عملیات از طریق فراخوانی های ایجکس(Ajax) انجام می شود.

برای تغییر این مدت زمانی می توانید از ثابت AUTOSAVE_INTERVAL به صورت زیر استفاده کنید.

define('AUTOSAVE_INTERVAL', 60); // زمان را به ثانیه وارد کنید

با قطعه کد زیر میتواید تعداد دفعات این ذخیره سازی را کمتر و یا بیشتر نمایید.

define('WP_POST_REVISIONS', 5);  // تعداد دلخواه را به جای عدد 5 وارد نمایید

نکته :‌ حتی می توانید این ویژگی را به طور کامل خاموش نمایید : ( با قطعه کد زیر )

۴- زباله دان(Trash Bin)

فرآیند کلی حذف یک آیتم(پست، صفحه، کامنت و …) در وردپرس معمولا بدین صورت است:

  1. حذف آیتم مورد نظر از طریق گزینه “انتقال به زباله دان”
  2. مراجعه به زباله دان
  3. حذف نهایی آیتم با گزینه “پاک کردن برای همیشه”
  4. وردپرس هر ۳۰ روز یکبار عملیات پاک سازی آیتم های موجود در زباله دان را به صورت خودکار انجام خواهد داد.

برای اینکه آین فرآیند را تغییر داده و آیتم های مربوطه بدون انتقال به زباله دان حذف شوند می توانید از کد زیر استفاده کنید، با اینکار گام اول و دوم غیرفعال خواهد شد و مستقیما گزینه “پاک کردن برای همیشه” را مشاهده خواهید کرد.

// Disable Trash Bin
define( 'EMPTY_TRASH_DAYS', 0 );

اگر می خواهید مدت زمان پاکسازی خودکار زباله دان را از ۳۰ روز به ۹۰ روز تغییر دهید قطعه کد زیر را در wp-config قرار دهید.

define( 'EMPTY_TRASH_DAYS', 90 ); // تعداد روز دلخواه را به جای عدد 7 وارد نمایید

۵- غیرفعال کردن ویرایشگر قالب و افزونه

در بخش مدیریت وردپرس و در زیرمنوی نمایش و افزونه ها گزینه ای با عنوان ویرایشگر وجود دارد که به شما اجازه می دهد فایل های افزونه و قالب را ویرایش کنید، این امکان اگر چه مفید و کاربردی است اما اگر در اختیار یک هکر قرار بگیرد می تواند هر بلایی بر سر وب سایت تان بیاورد. در پست آموزشی امنیت وردپرس: ویرایشگر پوسته و افزونه را غیرفعال کنید! به تفضیل در این باره صحبت کردیم. در هر صورت برای غیر فعال کردن این قابلیت می توانید از کد زیر استفاده کنید.

define( 'DISALLOW_FILE_EDIT',true );

۶- بهینه‌سازی خودکار دیتابیس و تعمیر پایگاه داده

وردپرس دارای یک ابزار توکار و کاربردی است که به شما اجازه می دهد بدون نصب افزونه اضافی عملیات تعمیر و بهینه سازی دیتابیس را انجام دهید. برای فعال سازی این ویژگی خط زیر را به wp-config اضافه کنید.

define( 'WP_ALLOW_REPAIR', true );

پس از انجام اینکار به انتهای آدرس وب سایت تان مسیر wp-admin/maint/repair.php را اضافه کرده در صفحه ای که باز خواهد شد از گزینه های “تعمیر پایگاه داده” و “تعمیر و بهینه سازی پایگاه داده” استفاده کنید.

http://yourdomain.com/wp-admin/maint/repair.php

در صورت نیاز به اطلاعات بیشتر مطلب آموزشی تعمیر و بهینه سازی دیتابیس وردپرس بدون نصب افزونه را مطالعه فرمائید.

۷- تغییر جدول کاربران

وردپرس به طور پیش فرض اطلاعات و مشخصات کاربران را در دو جدول wp_users و wp_usermeta نگهداری می کند. با استفاده از خطوط زیر می توانید جدول دلخواه خود را به وردپرس معرفی کرده تا اطلاعات کاربران تان در این جداول ذخیره شود.

define( 'CUSTOM_USER_TABLE', $table_prefix.'my_new_users' );
define( 'CUSTOM_USER_META_TABLE', $table_prefix.'my_new_usermeta' );

۸- غیرفعال کردن بروزسانی جداول وردپرس

هنگامی که وردپرس را به آخرین ورژن آپدیت می کنید معمولا تابع ()dbDelta در پشت صحنه اجرا خواهد شد، هدف این تابع تغییر پایگاه داده به منظور مطابقت با آخرین نسخه وردپرس است. توجه داشته باشید که این مورد به خودی خود مشکلی ایجاد نخواهد کرد، اما وب سایت های بزرگی که دارای حجم اطلاعاتی بالا و تعداد زیادی کاربر هستند ترجیح می دهند با غیرفعال کردن این کانفیگ خودشان در زمان های کم ترافیک اینکار را انجام دهند تا سربار کمی به وب سایت شان تحمیل شود.

برای غیرفعال کردن این قابلیت از کانفیگ زیر استفاده کنید:

define( 'DO_NOT_UPGRADE_GLOBAL_TABLES', true );

۹- جلوگیری از نصب و بروزرسانی افزونه و قالب توسط کاربران

در سیستم مدیریت محتوای وردپرس فقط کاربرانی که دارای نقش(Role) ادمین یا Administrator هستند می توانند قالب ها و افزونه ها را مدیریت کنند، اما گاهی اوقات ممکن است بخواهید این امکان را به طور کامل در وب سایت تان غیرفعال کنید.

برای این منظور کافی است خط زیر را در wp-config قرار دهید.

define( 'DISALLOW_FILE_MODS',true );

پس از اعمال تغییرات فوق، دیگر گزینه “افزودن” از منوی “افزونه ها” و گزینه “افزودن پوسته تازه” از منوی “نمایش” در دسترس نخواهد بود.

10- فعال سازی اشکال زدایی یا Debug :

اگر وب سایت وردپرس شما دارای خطاها و یا پیغام هایی باشد , به صورت پیش فرض این پیام ها نمایش داده نمیشود . برای فعال سازی این امکان , کدی با مقدار WP_DEBUG را در فایل wp-config.php جستجو کرده و مقدار آن را مانند کد زیر true قرار دهید .

11- بهترین حق دسترسی را به فایل ها و پوشه ها بدهید:

کد زیر باعث می شود permission فایل ها و پوشه ها به بهترین حالت ممکن ( از نظر امنیتی ) تغییر یابد.

چگونه از فایل wp-config.php محافظت کنیم؟

همانطور که تا اینجا ملاحظه کردید فایل wp-config حاوی تنظیمات مهم وردپرس است و باید به طریقی از آن محافظت کنید تا امکان هرگونه سوء استفاده و خرابکاری در وب سایت تان را به حداقل برسانید. در ادامه به تعدادی از این اقدامات امنیتی اشاره می کنیم.

۱- فایل htaccess

یکی از اقدامات مهم امنیتی استفاده از فایل پیکربندی htaccess است، کافی است خطوط زیر را در این فایل قرار دهید. برای آشنایی بیشتر با htaccess مقاله چگونه از فایل htaccess. استفاده کنیم؟ را مطالعه فرمائید.

# Protect wp-config.php
<Files wp-config.php> order allow,deny deny from all
</Files>

اگر وب سرورتان Nginx است از کدهای زیر استفاده کنید.

location ~* wp-config.php { deny all; }

۲- تغییر مکان wp-config

در وب سایت های وردپرسی معمولا فایل wp.config.php در مسیر روت وب سایت (دایرکتوری public_html) قرار داد و طبیعی است که هکرها از این موضوع مطلع هستند. خوشبختانه وردپرس به شما  اجازه می دهد تا این فایل را به خارج از محل نصب وردپرس منتقل کنید، به عنوان مثال انتقال و جابه جایی از مسیر public_html/ به / .

۳- تغییر سطوح دسترسی

یکی دیگر از اقداماتی که برای تامین امنیت wp-config می توانید انجام دهید ایجاد محدودیت های دسترسی است. در صورتی که از cpanel استفاده می کنید بر روی wp-config کلیک راست کرده و گزینه Change Permissions را انتخاب کنید، سپس در پنجره ای که باز خواهد شد مطابق تصویر زیر عمل کرده و در مواقعی که واقعا می خواهید این فایل را تغییر دهید تیک گزینه Write در بخش User را نیز انتخاب نمائید.

جمع بندی

همانطور که ملاحظه کردید کارهای زیادی با فایل wp-config می توانید انجام داد، تنظیمات و پیکربندی هایی که در این مقاله بررسی کردیم به هیچ وجه کامل نبوده و سعی کردیم مفیدترین آنها را به شما آموزش دهیم. با توجه به حساسیت بالای این فایل بهتر است ابتدا تست های خود را در یک محیط آزمایشی(Local) انجام داده و سپس به سرور اصلی منتقل نمائید. در پایان اگر می خواهید فایل wp-config را به سرعت و بر اساس نیازتان ایجاد کنید ابزار قدرتمند generatewp.com در این زمینه به شما کمک خواهد کرد.


موضوع : وب/ برچسب : , , / لینک کوتاه : https://emila.ir/?p=15979
designer