
درسته که وردپرس یک cms خیلی محبوب و اپن سوروس است و متخصص های زیادی از سراسر دنیا روی بهبود اون کار می کنند، اما همیشه افرادی هستند که بنا به دلایل مختلفی ممکن است بخواهند سایت شما را هک کنند. شما چه با استفاده از وردپرس یک سایت شرکتی برای خودتون درست کرده باشید و چه یک سایت فروشگاهی، باید از امنیت سایت تان مطمئن باشید. این موضوع وقتی حساس تر می شود، که مخاطبین شما برای عضویت در سایت شما مشخصات خود را وارد کرده اند و قطعا شما علاوه بر اطلاعات خود مسئول و امانت دار اطلاعات کاربرانتان هم هستید.
بدتر از آن ممکن است هکر با تغییر ظاهر سایت شما یا گذاشتن اطلاعات غلط در آن به اعتمادی که افراد به برندتان دارند لطمه بزند. یک حالت دیگر هم زمانی است که سایت شما در زمان خاصی از سال که افزایش تقاضا برای محصولتان دارید و خیلی برنامه ریزی کردید نتواند سرویس دهد تا حتی از کار بیفتد!
تامین امنیت در وردپرس امکن پذیر است و روشهای مختلفی دارد. این مقاله قرار نیست یک آموزش کامل امنیت وردپرس باشد، ولی من سعی کردم راه هایی که بیشترین نقش در امنیت وردپرس دارند را بیاورم. اول روشهای بدون افزونه را می آورم و در آخر مقاله بهترین افزونه های امنیت وردپرس رو بهتون معرفی میکنم. با من همراه باشید:
امنیت وردپرس بدون افزونه
استفاده از ssl
با استفاده از پروتکل امن HTTPS دادههای سایت شما در محیطی امن منتقل می شوند.
بکاپ گیری منظم از وردپرس
علاوه بر بکاپ های دوره ای که هاست از سایت میگیره سعی کنید خودتون هر چند مدت یکبار از سایت یک فول بکاپ تهیه نمائید.
حذف افزونه ها و قالب های بدون استفاده
اگر از قالب یا افزونه ای استفاده نمی کنید، آن را حذف کنید تا هم هاست خلوت تری داشته باشید و هم به مرور زمان به دلیل باگهای احتمالی داخل آنها هک نشوید.
نصب وردپرس
وردپرس را از سایت رسمی وردپرس دانلود کنید(لینک)
بعد از آپلئد فایل زیپ در درون روت سایت(پوشه public_html) فایل زیپ را پاک کنید.
فایل readme.html و licence.txt را پاک کنید، این فایلها مشخصات نسخه وردپرس شما را در اختیار هکر قرار می دهد.
انتخاب نام و پسورد غیر قبل حدس برای دیتابیس و یوزر
تغییر salt key ها
انتخاب پیشوند جدولهایی که قابل حدس نباشند
عدم استفاده از نام کاربری ادمین
استفاده از رمز قوی برای پنل ادمین وردپرس
قالب و افزونه ها
استفاده از قالب و افزونه های اورجینال
تا جای ممکن از قالب ها و افزونه های اصلی و لایسنس دار استفاده کنید. قالب و افزونه های نال شده ممکن است حاوی کد مخرب باشند. قالب ها و افزونه ها را با آمدن آپدیت جدید بروز کنید، چون نسخه جدید باگ های ورژن قبلی را فیکس می کند.
جلوگیری از آپدیت خودکار وردپرس
در روزهای ابتدایی که آپدیت نسخه جدید وردپرس ارائه می شود، آپدیت انجام ندهید و 10 تا 15 روز صبر کنید تا باگهای احتمالی آن پیدا شوند و فیکس شوند و حفره های امنیتی به سایت شما آسیب نزنند. ممکن است وردپرس شما روی آپدیت خودکار باشد و این باعث می شود به محض آمدن ورزن جدید اتوماتیک آپدیت انجام شود. برای اینکه آپدیت وردپرس بصورت دستی و با کنترل خودتان انجام شود لازم است. کافی است این قطعه کد را در wp-config.php اضافه کنیم:
define( 'WP_AUTO_UPDATE_CORE', false );
بعد از آن با آمدن ورژن جدید نوتیفیکیشن را داخل پنل وردپرس دریافت می کنید و فقط با کلیک دکمه آپدیت ورژن قبلی بروز می شود.
پنهان کردن ورژن وردپرس
یکی از راه هایی که هکرها برای پیدا کردن راه نفوذ به سایت تست می کنند، پیدا کردن ورژن وردپرس است. چون اگر آن ورژن باگی داشته باشد می تواند از طریق آن به سایت نفوذ کند. اگر سورس صفحه سایت خود را باز کنید ورژن وردپرس به راحتی قابل نمایش است، برای مخفی کردن ورژن قطعه کد زیر را داخل فایل function.php قالب قرار دهید.
remove_action('wp_head', 'wp_generator');
function wpt_remove_version() {
return '';
}
add_filter('the_generator', 'wpt_remove_version');
امنیت کاربران و لقب ها
حتی اگر ما نام ادمین سایت مان را به جای ادمین یک نام کاربری دیگر تعریف کینم، در قسمت نویسنده مقاله ها آن نام کاربری قابل نمایش است.
برای اینکه هکرها و ربات ها نتوانند یوزرنیم ورودی سایت را متوجه شوند و تعداد مراحل حملات بروت فورس کاهش یابد، می توانیم در قسمت کاربران و ویرایش کاربر لقب به جای نام ادمین یک لقب تعریف کنیم. این باعث می شود که به جای نام کاربری اصلی یک لقب تزئینی نمایش داده شود.
ایمن سازی پوشه wp-admin
در حالت عادی برای تمام سایتهای وردپرسی اگر بعد از نام دامنه عبارت /wp-admin را بنویسیم به صفحه لاگین سایت هدایت می شویم. اما برای اینکه دسترسی به این صفحه سخت تر شود چند مرحله میتوانیم انجام دهیم:
ورود دو مرحله ای:
انتخاب پوشه کلیک راست password protect را می زنیم.
Password protect this directory
یک نام انتخاب می کنیم.
Create user و انتخاب یوزر نیم و پسورد
تغییر صفحه ورود پیش فرض وردپرس
اگر بخواهید افراد نتوانند به صفحه ورود پیش فرض وردپرس (/wp-login.php) دسترسی داشته باشند، می توانیم مسیر آن را تغییر دهید.
برای این منظور مراحل زیر را به ترتیب انجام دهید:
در پوشه روت سایت نام فایل wp-login.php را به نام دلخواه example.php تغییر دهید.
فایل example.php را باز میکنیم و درون آن هر جایی که wp-login.php بود را با example.php جایگزین میکنیم.
در پوشه wp-include فایل general-template.php را باز میکنیم و هر جایی که wp-login.php بود را با example.php جایگزین میکنیم.
در داخل پوشه public_html یک فایل جدید ایجاد می کنیم برای مثال warning.html
در فایل general-template.php در کدها جایی که صفحه login به example.php ریدایرکت می شود را پیدا کنید و آن را با warning.html جایگزین کنید.

غیر فعال سازی ثبت نام در سایت یا ایمن کردن پنل کاربری و ثبت نام
افرادی که داخل سایت ثبت نام می کنند به قسمتهایی از سایت ما دسترسی دارند، لذا نیاز است بعد از ثبت نام هر فرد بتوانید بر روی عملکرد آنها نظارت دقیق داشته باشید. اگر در سایت شما نیازی به ثبت نام افراد مختلف نیست، حتما از قسمت تنظیمات – همگانی – عضویت را غیر فعال کنید.
اگر نیاز بود به افراد خاصی دسترسی دهید حتما از قسمت نقش پیش فرض کاربر دسترسی آن فرد به بخش های مختلف سایت را محدود کنید.
جلوگیری از ایندکس شدن فایل های داخل دایرکتوری های هاست
نباید یک فرد بتواند محتوایات داخل پوشه ای هاست رو ببیند(باگ امنیتی LFD). این اتفاق زمانی می افتد که داخل پوشه های سایت فایل ایندکس وجود نداشته باشد. برای برقرار کردن امنیت پوشه ها از طریق فایل htaccess می توانیم استفاده کنیم. فایل htaccess کلیه فایل ها و پوشه های داخل public_html را تحت دستوراتش قرار میدهد. درون فایل htaccess یک قانون تعریف میکنیم:
Options - Indexes
حذف نسخه راه انداز وردپرس
برای اینکه کسی نتواند اطلاعات پایگاه داده ما را بخواند، باید اطلاعات فایل کانفیگ رو از هکر مخفی کنیم. بعد از راه اندازی سایت اگر مجدد فایل installer.php که داخل پوشه wp-admin است را اجرا کنیم. دوباره میشود سایت را اجرا کرد و این باعث هک سایت می شود. برای اینکه حتی اگر هکر به اطلاعات سایت شما در پوشه کانفیگ دسترسی پیدا کرد نتواند سایت را دوباره اجرا یا حتی دیفیس کند باید بعد از نصب وردپرس فایل installer.php را حذف کنیم.
ایمن کردن فایل کانفیگ wp-config
هر فایلی داخل پوشه public_html باشد از درون فضای وی دسترسی پذیر است. یکی از فایل های خیلی مهم وردپرس، فایل کانفیگ است که اطلاعات پایگاه داده ما داخل آن قرار دارد. برای اینکه امنیت این فایل رو برقرار کنیم آن را از پوشه اصلی سایت به یک پوشه قبل انتقال می دهیم.
ایمن سازی wp-include
برای اینکه کسی نتواند اطلاعات فایل wp-include را بخواند لازم است در داخل فایل .htaccess کدهای زیر را اضافه کنید:
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
ایمن کردن .htaccess
برای افزایش امنیت فایل .htaccess قطعه کد زیر را داخل آن قرار می دهیم.
<Files .htaccess>
order deny,allow
deny from all
</Files>
عدم نمایش یوزر در صفحه لاگین
اگر یک کاربر و هکر به هر روشی به صفحه لاگین سایت دست پیدا کند. زمانی که یوزرنیم و پسورد اشتباه را وارد می کند، خطایی که نمایش می دهد به او میگوید ” نام کاربری شما اشتباه است” . اگر یوزرنیم صحیح مثلا admin را وارد کند با پسورد اشتباه به او پیغام ” رمز عبوری که برای نام کاربری admin وارد کرده اید اشتباه است، نمایش داده می شود. این موضوع اطلاعات نام کاربری سایت را به راحتی در اختیار هکر می گذارد. برای تغییر این حالت قطعه کد زیر را داخل فایل function.php قرار دهید.
function failed_login () {
return 'نام کاربری یا رمز عبور صحیح نیست';
}
add_filter ( 'login_errors', 'failed_login' );
غیر فعال کردن بخش های حساس داخل پنل مدیریت
برای اینکه حتی اگر هکر وارد پنل وردپرس شما شد نتواند در سایت تغییر ایجاد کند لازم است قسمت های ویرایشگر قالب و افزودن و ویرایشگر افزونه ها را با قرار دادن کد زیر در فایل wp-config.php قرار دهید.
define( 'DISALLOW_FILE_EDIT', true );
define('DISALLOW_FILE_MODS', true);
غیر فعال کردن اجرای فایل PHP در دایرکتوری های خاص وردپرس
برای اینکه با اجرای کد php در پوشه آپلود ها هکر نتواند به سایت آسیب بزند باید امکان اجرای php را در این پوشه غیر فعال کرد. برای این منظور داخل پوشه wp-config و بعد از آن پوشه ی uploads بروید و یک فایل htaccess. حاوی کد زیر بسازید.
<Files *.php>
deny from all
</Files>
غیر فعال کردن XML-RPC در وردپرس
XML-RPC یک پروتکل برای کنترل از راه دور سایت است، که به مدیران سایتها اجازه میدهد با استفاده از سرویس هایی مثل IFTTT و نرم افزارهای مدیریت وردپرس از راه دور سایت خود را مدیریت کنند. اما ممکن است فرد دیگری با ایمیل شما در این سرویسها اکانت ساخته و اقدام به نفوذ به سایت کند. برای همین بهترین کار این است که کلا این ویزگی را در سایت وردپرسی خود غیرفعال کنید. برای این کار چند روش وجود دارد یکی از آنها این است که قطعه کد زیر را در فایل functions.php در پوشه themes در داخل پوشه wp-content قرار دهید.
add_filter( 'xmlrpc_enabled', '__return_false' );

بهترین افزونههای امنیتی وردپرس
راه های مختلفی برای افزیش امنیت وردپرس هست، در بالا روشهای بدون افزونه را معرفی کردم چون همانطور که گفتم خود افزونه ها میتوانند یک روش نفوذ در سایت شما باشند و هر چه از افزونه های کمتری استفاده کنید، بهتر است.
اما اگر با کدنویسی یا تغییر فایل های داخل هاست آشنایی ندارید، بهتر است از افزونه های زیر کمک بگیرید.
Wordfence Security
iThemes Security
All In One WP Security & Firewall
SecuPress
MalCare Security & Firewall
WP fail2ban
Sucuri Security
BulletProof security
شما از چه راه های دیگه ای برای افزایش امنیت سایت تون استفاده می کنید؟
سلام اگه ما افزونه ها و قالبهامون رو از سایتهای معتبر ایرانی بخریم چون لایسنس اورجینال ندارند ممکنه امنیت سایت رو به خطر بندازه؟
سلام درسته این سایتها معتبر هستند ولی لایسنس اصلی رو ندارند و در کدها دستکاری شده تا اون لایسنسن غیر فعال بشه
شاید در امنیت سایت تاثیر مستقیم نذاره
یعنی باید تموم این افزونه ها رو نصب کنیم یا یکیش کافیه؟