در این نوشتار با مواردی آشنا می شوید که می توانید با انجام آنها امنیت سایت های وردپرس خود را بالاتر ببرید. نکات مهم دیگری نیز در مقاله ۱۰ نکته برای افزایش امنیت وردپرس برای شما ذکر کرده بودیم که باید برای امنیت سایت خود به آنها هم اهمیت بدهید. نکاتی که امروز در این مقاله می خوانید کمی حرفه ای تر و مهمتر می باشند.
استفاده از آخرین نسخه وردپرس
بارها در مطالب مختلف به این نکته اشاره شده ولی به دلیل اهمیت بسیار بالا در امنیت سایت شما، صرفا جهت یادآوری و تاکید بیشتر به عنوان اولین نکته امنیتی در این مقاله نیز مطرح می کنیم که همواره هسته وردپرس خود را بروز نگهدارید.
عدم نمایش نسخه وردپرس
یکی از نکات مهم در سایت های وردپرس جلوگیری از نمایش ورژن وردپرس در سایت و Source آن است. در این صورت ربات های اسکن کننده هکرها از نسخه وردپرس سایت شما مطلع نمی شوند و اگر شما در بروزرسانی وردپرس سهل انگاری کرده باشید و نسخه ای قدیمی از وردپرس نصب داشته باشید سایت شما از چشم هکرها تا حدودی پنهان می ماند. یکی از کارهای مهم حذف فایل Readme.html از محل نصب وردپرس می باشد که بعد از هر بروزرسانی وردپرس باید انجام دهید. همچنین با گذاشتن رمز بر روی پوشه wp-admin مانع دسترسی ربات ها به فایل های داخل این پوشه شوید چون برخی فایل ها مانند wp-admin/js/common.js هستند که اطلاعات نسخه وردپرس را به هکر نمایش می دهند. علاوه بر این موارد پوسته وردپرس سایت شما نیز نباید نسخه وردپرس را بیان کند! با اضافه کردن کد زیر به انتهای فایل functions.php در پوشه قالب سایت خود از نمایش نسخه وردپرس در همه جای سایت خود خلاص شوید:
1 2 3 4 5 6 7 8 9 10 |
function _remove_script_version( $src ){ $parts = explode( ‘?’, $src ); return $parts[0]; } add_filter( ‘script_loader_src’, ‘_remove_script_version’, 15, 1 ); add_filter( ‘style_loader_src’, ‘_remove_script_version’, 15, 1 ); function wpmudev_remove_version() { return ”; } add_filter(‘the_generator’, ‘wpmudev_remove_version’); |
قسمت اول این کد که سبز رنگ می باشد نمایش نسخه اسکریپت در انتهای فایل های css و js در source صفحات سایت شما را مخفی می کند و قسمت دوم این کد نمایش نسخه اصلی وردپرس در Header سایت شما را غیر فعال می کند.
محافظت از پوشه آپلود ها
پوشه Uploads که داخل پوشه wp-content قرار دارد از هدف های اصلی هکر ها می باشد که از طریق آپلود فایل های php مخرب به آن می توانند به هاست شما نفوذ کنند! به همین جهت بسیار مناسب است که جلوی اجرای فایل های اجرایی php داخل این پوشه و زیرمجموعه های آن را بگیرید. برای اینکار باید یک فایل htaccess داخل پوشه uploads ایجاد کنید و کد زیر را داخل آن قرار دهید:
1 2 3 4 5 6 7 8 9 |
<FilesMatch "\.(?i:php)$"> <IfModule !mod_authz_core.c> Order allow,deny Deny from all </IfModule> <IfModule mod_authz_core.c> Require all denied </IfModule> </FilesMatch> |
متاسفانه اگر از پوسته یا پلاگین هایی استفاده می کنید که فایل های php داخل این پوشه قرار می دهند و از آن استفاده می کنند مجبور هستید که از این روش استفاده نکنید که کارآیی آنها را حفظ نمایید.
محدود نمودن wp-content
شما باید دسترسی بازدیدکننده ها و هکر ها به فایل های php داخل پوشه wp-content را نیز محدود کنید. برای اینکار نیز همان فایل htaccess که در مرحله قبل ایجاد کردید در این پوشه کپی نمایید. پس از افزودن این فایل سایت خود و کارآیی همه بخش های آن را کنترل نمایید که مشکل خاصی ایجاد نشده باشد. اگر مشکلی در سایت شما بوجود آمده باشد نمی توانید از این روش استفاده نمایید، البته می توانید برخی فایل های خاص را دسترسی بدهید مانند کدی که در مرحله بعد به شما نمایش می دهیم.
محدود نمودن wp-includes
این گزینه دسترسی به فایل های php داخل پوشه wp-includes را مسدود می کند. برای اینکار فایل htaccess حاوی کد زیر را داخل این پوشه ایجاد کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<FilesMatch "\.(?i:php)$"> <IfModule !mod_authz_core.c> Order allow,deny Deny from all </IfModule> <IfModule mod_authz_core.c> Require all denied </IfModule> </FilesMatch> <Files wp-tinymce.php> Allow from all </Files> <Files ms-files.php> Allow from all </Files> |
همانطور که مشاهده می کنید در این کد به دو عدد فایل بطور خاص اجازه دسترسی داده شده است.
حذف فایل های error_log
فایل های لوگ خطا ها اطلاعات خطرناکی می تواند در اختیار هکر ها قرار دهد بنابراین همواره سعی کنید چنین فایل هایی را از هاست خود حذف نمایید.
استفاده از نام کاربری مناسب به همراه پسورد سخت و همچنین تغییر پیشوند جداول دیتابیس وردپرس و غیرفعال کردن امکان ویرایش قالب و افزونه ها از مدیریت وردپرس از جمله نکات امنیتی مهمی هستند که در آموزش های قبل در مورد آنها صحبت کردیم.
6 دیدگاه
با سلام
ضمن تشکر از پست بسیار مفید و کاربردی شما
سئوالی که دارم این است که آیا بعد از ساخت فایل .htaccess در پوشه upload باید تنها کد درون آن همان کدی باشد که شما ارائه نمودید یعنی کد زیر:
Order allow,deny
Deny from all
Require all denied
یا باید کد اول پیش فرض وردپرس که در فایل .htaccess در ریشه هاست وجود دارد بشرح زیر می باشد:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
را درون آن کپی نماییم و بعد کد پیشنهادی شما را یا خیر؟
با تشکر
فقط و فقط کد داده شده کافی است.
سلام و ضمن تشکر از مطلب کوتاه ولی بسیار کاربردی و البته حیاتی شما، سئوالاتی در خصوص مطالب برایم ایجاد شد که در صورت امکان پاسخ فرمایید:
۱٫ در رابطه با برداشتن نسخه وردپرس
الف- چرا وقتی کد پیشنهادی شما را در داخل فایل فانکشن قالب کپی می کنیم با خطاء مواجه می شود. مثلاً بنده که وارد کردم این خطاء را می دهد:
Parse error: syntax error, unexpected ‘,’ in /home/ghazavat/public_html/wp-content/themes/sahifa/functions.php on line 35
حتی جای آن را در همان فایل تغییر دادم بازهم خطاء می دهد؟
ب- کد شما با این کد remove_action(‘wp_head’, ‘wp_generator’); که برخی از سایت ها ارائه نمودند، اولاً چه تفاوتی دارد و کدام بهتر است و ثانیاً اگر کارکرد آنها متفاوت است می توان همزمان استفاده کرد یا خیر؟
۲٫آیا می توان بجای ایجاد یک فایل مجزا .htaccess برای محافظت از پوشه های Wp-Upload و WP-Includes و Wp-Content در داخل هر یک از آنها، همین کدها را داخل فایل .htaccess که در ریشه هاست است قرار داد و از تکرار فایل جلوگیری کرد یا خیر؟
۳٫ در رابطه با محافظت از پوشه آپلود ها، آیا این که ما گزینه سازماندهی در رسانه ها را فعال کرده باشیم تا فایل ها در پوشه های سال و ماه آن قرار گیرد و عدم فعال سازی آن تفاوت دارد یا خیر؟
۴٫ در بخش محدود نمودن wp-includes در مورد با اجازه دسترسی به دو فایل wp-tinymce.php و ms-files.php کمی در خصوص دو فایل و کارکرد آنها توضیح فرمایید.
اگر سئوالات کمی طولانی شد پوزش مرا بپذیرید چون خواستم تمامی ابهامات یکجا مطرح شود.
با سپاس
سلام،
برای پاسخ به سوال ۱ الف بهتر بود بگید که خط ۳۵ در اون فایل کدام خط از کد ما می شود؟
در مورد سوال ۱ ب: خطوط ۱ تا ۹ از این کد جلو نمایش ورژن وردپرس در qurey string ها را می گیرد! یعنی مثلا اگر به سورس سایت های وردپرسی نگاهی بیاندازید در خطوطی که js یا css ها فراخوانی می شوند جلوی آنها ver نوشته شده است که نشان دهنده ورژن وردپرس می باشد.
خط شماره ۱۰ و خطی که عنوان کردید قرار است یک کار انجام دهند و نمایش ورژن وردپرس در متاتگ عمومی آن را غیر فعال کنند.
پاسخ سوال ۲: این فایل ها باید کاملا مستقل و جدا باشند.
پاسخ سوال ۳: تفاوتی ندارد و htaccess بر همه فولدرهای زییرمجموعه حکمرانی می کند.
پاسخ سوال ۴: مثلا فایل wp-tinymce.php مربوط به ویرایشگر متن وردپرس است و ممکن است شما بخواهید کاربران سایت شما امکان ارسال پست داشته باشند برای همین این فایل را آزاد می گذاریم تا اختلالی پیش نیاید.
خیلی ممنون از سایت خوب شیوا هاست
واقعا با وجود اینکه تو زمینه وردپرس نیستید مقاله خیلی مفید و کاربردی قرار دادید.
امیدوارم همیشه موفق باشید
خیلی خیلی زیاد ازتون ممنونم ، خیلی بهم کمک کردین